> @@ -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


Reply via email to