On 10/29/25 09:12, Akihiko Odaki wrote: > Unmapping a blob changes the memory map, which is protected with RCU. > RCU is designed to minimize the read-side overhead at the cost of > reclamation delay. While this design usually makes sense, it is > problematic when unmapping a blob because the operation blocks all > virtio-gpu commands and causes perceivable disruption. > > Minimize such the disruption with force_rcu(), which minimizes the > reclamation delay at the cost of a read-side overhead. > > Signed-off-by: Akihiko Odaki <[email protected]> > --- > hw/display/virtio-gpu-virgl.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/hw/display/virtio-gpu-virgl.c b/hw/display/virtio-gpu-virgl.c > index 07f6355ad62e..71cde671c193 100644 > --- a/hw/display/virtio-gpu-virgl.c > +++ b/hw/display/virtio-gpu-virgl.c > @@ -187,6 +187,7 @@ virtio_gpu_virgl_unmap_resource_blob(VirtIOGPU *g, > memory_region_set_enabled(mr, false); > memory_region_del_subregion(&b->hostmem, mr); > object_unparent(OBJECT(mr)); > + force_rcu(); > } > > return 0; >
Tested-by: Dmitry Osipenko <[email protected]> -- Best regards, Dmitry
