Hi

On Wed, Sep 9, 2026 at 1:33 PM Akihiko Odaki
<[email protected]> wrote:
>
> On 2026/09/08 19:42, Marc-André Lureau wrote:
> > Hi
> >
> > On Tue, Sep 8, 2026 at 10:46 AM Akihiko Odaki
> > <[email protected]> wrote:
> >>
> >> On 2026/09/04 22:10, Marc-André Lureau wrote:
> >>> Use the common virtio_gpu_disable_scanout() to reset the scanout state,
> >>> including GL state if any.
> >>>
> >>> Fixes: 7c092f17ccee ("virtio-gpu: Handle resource blob commands")
> >>> Signed-off-by: Marc-André Lureau <[email protected]>
> >>> ---
> >>>    hw/display/virtio-gpu-rutabaga.c | 4 +---
> >>>    hw/display/virtio-gpu-virgl.c    | 6 ++----
> >>>    hw/display/virtio-gpu.c          | 7 +++++--
> >>>    3 files changed, 8 insertions(+), 9 deletions(-)
> >>>
> >>> diff --git a/hw/display/virtio-gpu-rutabaga.c 
> >>> b/hw/display/virtio-gpu-rutabaga.c
> >>> index 8a82e96b7461..8697dd6936ba 100644
> >>> --- a/hw/display/virtio-gpu-rutabaga.c
> >>> +++ b/hw/display/virtio-gpu-rutabaga.c
> >>> @@ -312,9 +312,7 @@ rutabaga_cmd_set_scanout(VirtIOGPU *g, struct 
> >>> virtio_gpu_ctrl_command *cmd)
> >>>        scanout = &vb->scanout[ss.scanout_id];
> >>>
> >>>        if (ss.resource_id == 0) {
> >>> -        scanout->resource_id = 0;
> >>> -        qemu_console_set_surface(scanout->con, NULL);
> >>> -        qemu_console_gl_scanout_disable(scanout->con);
> >>> +        virtio_gpu_disable_scanout(g, ss.scanout_id);
> >>>            return;
> >>>        }
> >>>
> >>> diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c
> >>> index 79d4c0b569fb..87d1fc3d5f65 100644
> >>> --- a/hw/display/virtio-gpu-virgl.c
> >>> +++ b/hw/display/virtio-gpu-virgl.c
> >>> @@ -618,8 +618,7 @@ static void virgl_cmd_set_scanout(VirtIOGPU *g,
> >>>                ss.r.x, ss.r.y, ss.r.width, ss.r.height,
> >>>                d3d_tex2d);
> >>>        } else {
> >>> -        
> >>> qemu_console_set_surface(g->parent_obj.scanout[ss.scanout_id].con, NULL);
> >>> -        
> >>> qemu_console_gl_scanout_disable(g->parent_obj.scanout[ss.scanout_id].con);
> >>> +        virtio_gpu_disable_scanout(g, ss.scanout_id);
> >>>        }
> >>>        g->parent_obj.scanout[ss.scanout_id].resource_id = ss.resource_id;
> >>>    }
> >>> @@ -1426,8 +1425,7 @@ void virtio_gpu_virgl_reset_scanout(VirtIOGPU *g)
> >>>        int i;
> >>>
> >>>        for (i = 0; i < g->parent_obj.conf.max_outputs; i++) {
> >>> -        qemu_console_set_surface(g->parent_obj.scanout[i].con, NULL);
> >>> -        qemu_console_gl_scanout_disable(g->parent_obj.scanout[i].con);
> >>> +        virtio_gpu_disable_scanout(g, i);
> >>>        }
> >>>    }
> >>>
> >>> diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
> >>> index ae1f87ad68b2..cb096cb349cd 100644
> >>> --- a/hw/display/virtio-gpu.c
> >>> +++ b/hw/display/virtio-gpu.c
> >>> @@ -435,8 +435,11 @@ void virtio_gpu_disable_scanout(VirtIOGPU *g, int 
> >>> scanout_id)
> >>>    {
> >>>        struct virtio_gpu_scanout *scanout = 
> >>> &g->parent_obj.scanout[scanout_id];
> >>>
> >>> -    virtio_gpu_release_scanout_dmabuf(g, scanout_id);
> >>> -
> >>> +    if (scanout->dmabuf) {
> >>> +        virtio_gpu_release_scanout_dmabuf(g, scanout_id);
> >>> +    } else {
> >>> +        qemu_console_gl_scanout_disable(scanout->con);
> >>> +    }
> >>
> >> GL needs to be always disabled when clearing a scanout.
> >>
> >
> > Ok, I removed the else condition.
> >
> > Are you going to review the remaining 1-23 patches?
> > thanks
>
> I reviewed them all. I have comments for "[PATCH v2 02/25] virtio-gpu:
> fix use-after-free on blob cursor after detach". The other patches look
> good to me.

Thanks; I'll send a v3 removing the vhost-user-gpu patch 24, leaving
only 2 patches missing an r-b.


Reply via email to