Hi On Tue, Aug 21, 2018 at 1:13 PM Gerd Hoffmann <kra...@redhat.com> wrote: > > We must call the reset functions for both virtio-gpu > and vga to properly reset the combo device. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > include/hw/virtio/virtio-gpu.h | 1 + > hw/display/virtio-gpu.c | 2 +- > hw/display/virtio-vga.c | 6 +++++- > 3 files changed, 7 insertions(+), 2 deletions(-) > > diff --git a/include/hw/virtio/virtio-gpu.h b/include/hw/virtio/virtio-gpu.h > index d0321672f4..a718b7233f 100644 > --- a/include/hw/virtio/virtio-gpu.h > +++ b/include/hw/virtio/virtio-gpu.h > @@ -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, > diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c > index 3ddd29c0de..d6c9b02b86 100644 > --- a/hw/display/virtio-gpu.c > +++ b/hw/display/virtio-gpu.c > @@ -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; > diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c > index 701d980872..50c72f26f4 100644 > --- a/hw/display/virtio-vga.c > +++ b/hw/display/virtio-vga.c > @@ -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);
Ah, I only tested with vga_common_reset(). I was missing the virtio_gpu_reset() part. I assume you tested it? > vga_dirty_log_start(&vvga->vga); > } > > -- > 2.9.3 > -- Marc-André Lureau