From: "Alex Bennée" <alex.bennee@linaro.org>
To: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Cc: qemu-devel@nongnu.org,
Dmitry Osipenko <dmitry.osipenko@collabora.com>,
Paolo Bonzini <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>
Subject: Re: [PATCH 0/5] virtio-gpu: Force RCU when unmapping blob
Date: Thu, 30 Oct 2025 17:59:20 +0000 [thread overview]
Message-ID: <87jz0ctgnb.fsf@draig.linaro.org> (raw)
In-Reply-To: <20251029-force_rcu-v1-0-bf860a6277a6@rsg.ci.i.u-tokyo.ac.jp> (Akihiko Odaki's message of "Wed, 29 Oct 2025 15:12:44 +0900")
Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> writes:
> Based-on: <20251016-force-v1-1-919a82112498@rsg.ci.i.u-tokyo.ac.jp>
> ("[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?
Also works with the blob test:
➜ ./pyvenv/bin/meson test --setup thorough func-aarch64-gpu_blob
ninja: Entering directory `/home/alex/lsrc/qemu.git/builds/all'
[1/6] Generating qemu-version.h with a custom command (wrapped by meson to capture output)
1/1 qemu:func-thorough+func-aarch64-thorough+thorough / func-aarch64-gpu_blob OK 0.37s 1 subtests passed
Ok: 1
Expected Fail: 0
Fail: 0
Unexpected Pass: 0
Skipped: 0
Timeout: 0
Full log written to /home/alex/lsrc/qemu.git/builds/all/meson-logs/testlog-thorough.txt
🕙17:57:38 alex@draig:qemu.git/builds/all on virtio-gpu/next [$!?]
so a Tested-by: Alex Bennée <alex.bennee@linaro.org> from me.
>
> Signed-off-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
> ---
> 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,
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2025-10-30 18:01 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-10-29 6:12 [PATCH 0/5] virtio-gpu: Force RCU when unmapping blob Akihiko Odaki
2025-10-29 6:12 ` [PATCH 1/5] futex: Add qemu_futex_timedwait() Akihiko Odaki
2025-10-30 16:13 ` Alex Bennée
2025-10-29 6:12 ` [PATCH 2/5] qemu-thread: Add qemu_event_timedwait() Akihiko Odaki
2025-10-29 6:12 ` [PATCH 3/5] rcu: Use call_rcu() in synchronize_rcu() Akihiko Odaki
2025-10-29 6:12 ` [PATCH 4/5] rcu: Wake the RCU thread when draining Akihiko Odaki
2025-10-29 18:22 ` Peter Xu
2025-11-03 9:45 ` Akihiko Odaki
2025-11-05 20:43 ` Peter Xu
2025-11-06 1:40 ` Akihiko Odaki
2025-11-06 21:52 ` Peter Xu
2025-11-07 1:47 ` Akihiko Odaki
2025-11-07 14:00 ` Peter Xu
2025-11-08 1:47 ` Akihiko Odaki
2025-11-13 17:03 ` Peter Xu
2025-11-14 1:24 ` Akihiko Odaki
2025-11-14 15:30 ` Peter Xu
2025-11-15 1:58 ` Akihiko Odaki
2025-11-15 2:59 ` Akihiko Odaki
2025-11-17 16:42 ` Peter Xu
2025-11-17 22:53 ` Akihiko Odaki
2025-11-17 16:39 ` Peter Xu
[not found] ` <1b318ad8-48b3-4968-86ca-c62aef3b3bd4@rsg.ci.i.u-tokyo.ac.jp>
[not found] ` <7c49d808-ccb8-4262-ae6c-2ac746b43b80@rsg.ci.i.u-tokyo.ac.jp>
2025-11-13 17:30 ` Peter Xu
2025-11-14 1:12 ` Akihiko Odaki
2025-10-29 6:12 ` [PATCH 5/5] virtio-gpu: Force RCU when unmapping blob Akihiko Odaki
2025-10-30 11:18 ` Dmitry Osipenko
2025-10-30 11:17 ` [PATCH 0/5] " Dmitry Osipenko
2025-10-30 17:59 ` Alex Bennée [this message]
2025-10-31 21:32 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87jz0ctgnb.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=dmitry.osipenko@collabora.com \
--cc=mst@redhat.com \
--cc=odaki@rsg.ci.i.u-tokyo.ac.jp \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).