Based-on: <[email protected]> ("[PATCH] rcu: Unify force quiescent state")
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. Dmitry, can you see if this change makes difference? Signed-off-by: Akihiko Odaki <[email protected]> --- Akihiko Odaki (5): futex: Add qemu_futex_timedwait() qemu-thread: Add qemu_event_timedwait() rcu: Use call_rcu() in synchronize_rcu() rcu: Wake the RCU thread when draining virtio-gpu: Force RCU when unmapping blob include/qemu/futex.h | 29 ++++++-- include/qemu/rcu.h | 1 + include/qemu/thread-posix.h | 11 +++ include/qemu/thread.h | 8 ++- hw/display/virtio-gpu-virgl.c | 1 + util/event.c | 34 ++++++++-- util/qemu-thread-posix.c | 11 +-- util/rcu.c | 153 ++++++++++++++++++++++++------------------ 8 files changed, 163 insertions(+), 85 deletions(-) --- base-commit: ee7fbe81705732785aef2cb568bbc5d8f7d2fce1 change-id: 20251027-force_rcu-616c743373f7 Best regards, -- Akihiko Odaki <[email protected]>
