> @@ -1170,9 +1166,6 @@ static void virtio_gpu_device_realize(DeviceState
> *qdev, Error **errp)
>
> if (virtio_gpu_virgl_enabled(g->conf)) {
> vmstate_register(qdev, -1, &vmstate_virtio_gpu_unmigratable, g);
> - } else {
> - register_savevm(qdev, "virtio-gpu", -1, VIRTIO_GPU_VM_VERSION,
> - virtio_gpu_save, virtio_gpu_load, g);
> }
> }
>
> @@ -1220,6 +1213,9 @@ static void virtio_gpu_reset(VirtIODevice *vdev)
> #endif
> }
>
> +VMSTATE_VIRTIO_DEVICE(gpu, VIRTIO_GPU_VM_VERSION, virtio_gpu_load,
> + virtio_gpu_save);
> +
> static Property virtio_gpu_properties[] = {
> DEFINE_PROP_UINT32("max_outputs", VirtIOGPU, conf.max_outputs, 1),
> #ifdef CONFIG_VIRGL
> @@ -1245,6 +1241,7 @@ static void virtio_gpu_class_init(ObjectClass *klass,
> void *data)
> vdc->reset = virtio_gpu_reset;
>
> dc->props = virtio_gpu_properties;
> + dc->vmsd = &vmstate_virtio_gpu;
> }
>
> static const TypeInfo virtio_gpu_info = {
This is confusing. I think for the virtio_gpu_virgl_enabled() case we
install *two* vmstates now ...
I think you should move up VMSTATE_VIRTIO_DEVICE, then simply replace
the register_savevm() call with a vmstate_register() call.
cheers,
Gerd