virtio: Complete converting VirtioDevice to QOM realize
Drop VirtioDeviceClass::init.
Signed-off-by: Andreas Färber <afaerber@suse.de>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
diff --git a/hw/scsi/virtio-scsi.c b/hw/scsi/virtio-scsi.c
index 0a41ddb..a208cf3 100644
--- a/hw/scsi/virtio-scsi.c
+++ b/hw/scsi/virtio-scsi.c
@@ -642,8 +642,7 @@
void virtio_scsi_common_exit(VirtIOSCSICommon *vs)
{
- VirtIODevice *vdev = VIRTIO_DEVICE(dev);
- VirtIOSCSICommon *vs = VIRTIO_SCSI_COMMON(dev);
+ VirtIODevice *vdev = VIRTIO_DEVICE(vs);
g_free(vs->cmd_vqs);
virtio_cleanup(vdev);
diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 4070b37..1dba284 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -1156,18 +1156,12 @@
VirtioDeviceClass *vdc = VIRTIO_DEVICE_GET_CLASS(dev);
Error *err = NULL;
- assert(vdc->init != NULL || vdc->realize != NULL);
if (vdc->realize != NULL) {
vdc->realize(dev, &err);
if (err != NULL) {
error_propagate(errp, err);
return;
}
- } else {
- if (vdc->init(vdev) < 0) {
- error_setg(errp, "Device initialization failed.");
- return;
- }
}
virtio_bus_device_plugged(vdev);
}
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 54c5efe..6da88c0 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -124,12 +124,13 @@
};
typedef struct VirtioDeviceClass {
+ /*< private >*/
DeviceClass parent;
+ /*< public >*/
/* This is what a VirtioDevice must implement */
- int (*init)(VirtIODevice *vdev);
- void (*exit)(VirtIODevice *vdev);
DeviceRealize realize;
+ void (*exit)(VirtIODevice *vdev);
uint32_t (*get_features)(VirtIODevice *vdev, uint32_t requested_features);
uint32_t (*bad_features)(VirtIODevice *vdev);
void (*set_features)(VirtIODevice *vdev, uint32_t val);