virtio-vga: fix reset
authorGerd Hoffmann <kraxel@redhat.com>
Tue, 21 Aug 2018 11:13:12 +0000 (13:13 +0200)
committerGerd Hoffmann <kraxel@redhat.com>
Thu, 30 Aug 2018 10:52:57 +0000 (12:52 +0200)
We must call the reset functions for both virtio-gpu
and vga to properly reset the combo device.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-id: 20180821111313.27792-2-kraxel@redhat.com

hw/display/virtio-gpu.c
hw/display/virtio-vga.c
include/hw/virtio/virtio-gpu.h

index 3ddd29c0defb624423df8ab88a2abe1870c004bb..d6c9b02b8601247a3351c6f4ba22fd0069ddc8f8 100644 (file)
@@ -1289,7 +1289,7 @@ static void virtio_gpu_instance_init(Object *obj)
 {
 }
 
-static void virtio_gpu_reset(VirtIODevice *vdev)
+void virtio_gpu_reset(VirtIODevice *vdev)
 {
     VirtIOGPU *g = VIRTIO_GPU(vdev);
     struct virtio_gpu_simple_resource *res, *tmp;
index 701d98087272e0b4387a9ec7bc21067915a61be8..50c72f26f46762fdacb477797c1b1e0e1de5c031 100644 (file)
@@ -179,8 +179,12 @@ static void virtio_vga_realize(VirtIOPCIProxy *vpci_dev, Error **errp)
 static void virtio_vga_reset(DeviceState *dev)
 {
     VirtIOVGA *vvga = VIRTIO_VGA(dev);
-    vvga->vdev.enable = 0;
 
+    /* reset virtio-gpu */
+    virtio_gpu_reset(VIRTIO_DEVICE(&vvga->vdev));
+
+    /* reset vga */
+    vga_common_reset(&vvga->vga);
     vga_dirty_log_start(&vvga->vga);
 }
 
index d0321672f4a74b2a90a2c3a4398afaaf109f5fe2..a718b7233fcb030a6b81e61c0088f16e7c428460 100644 (file)
@@ -150,6 +150,7 @@ extern const GraphicHwOps virtio_gpu_ops;
     } while (0)
 
 /* virtio-gpu.c */
+void virtio_gpu_reset(VirtIODevice *vdev);
 void virtio_gpu_ctrl_response(VirtIOGPU *g,
                               struct virtio_gpu_ctrl_command *cmd,
                               struct virtio_gpu_ctrl_hdr *resp,