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);