Commit 3902d49e authored by Greg Kurz's avatar Greg Kurz Committed by Michael S. Tsirkin
Browse files

virtio-rng: implement per-device migration calls



While we are here, we also check virtio_load() return value.

Signed-off-by: default avatarGreg Kurz <gkurz@linux.vnet.ibm.com>
Reviewed-by: default avatarAlexander Graf <agraf@suse.de>
Reviewed-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
parent 9ea2511c
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -107,19 +107,20 @@ static void virtio_rng_save(QEMUFile *f, void *opaque)

static int virtio_rng_load(QEMUFile *f, void *opaque, int version_id)
{
    VirtIORNG *vrng = opaque;
    VirtIODevice *vdev = VIRTIO_DEVICE(vrng);

    if (version_id != 1) {
        return -EINVAL;
    }
    virtio_load(vdev, f, version_id);
    return virtio_load(VIRTIO_DEVICE(opaque), f, version_id);
}

static int virtio_rng_load_device(VirtIODevice *vdev, QEMUFile *f,
                                  int version_id)
{
    /* We may have an element ready but couldn't process it due to a quota
     * limit.  Make sure to try again after live migration when the quota may
     * have been reset.
     */
    virtio_rng_process(vrng);
    virtio_rng_process(VIRTIO_RNG(vdev));

    return 0;
}
@@ -219,6 +220,7 @@ static void virtio_rng_class_init(ObjectClass *klass, void *data)
    vdc->realize = virtio_rng_device_realize;
    vdc->unrealize = virtio_rng_device_unrealize;
    vdc->get_features = get_features;
    vdc->load = virtio_rng_load_device;
}

static void virtio_rng_initfn(Object *obj)