qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 0/3] monitor: only run coroutine commands in qemu_aio_context


From: Michael Tokarev
Subject: Re: [PATCH 0/3] monitor: only run coroutine commands in qemu_aio_context
Date: Thu, 18 Jan 2024 14:20:19 +0300
User-agent: Mozilla Thunderbird

16.01.2024 22:00, Stefan Hajnoczi wrote:
Several bugs have been reported related to how QMP commands are rescheduled in
qemu_aio_context:
- https://gitlab.com/qemu-project/qemu/-/issues/1933
- https://issues.redhat.com/browse/RHEL-17369
- https://bugzilla.redhat.com/show_bug.cgi?id=2215192
- https://bugzilla.redhat.com/show_bug.cgi?id=2214985

The first instance of the bug interacted with drain_call_rcu() temporarily
dropping the BQL and resulted in vCPU threads entering device emulation code
simultaneously (something that should never happen). I set out to make
drain_call_rcu() safe to use in this environment, but Paolo and Kevin discussed
the possibility of avoiding rescheduling the monitor_qmp_dispatcher_co()
coroutine for non-coroutine commands. This would prevent monitor commands from
running during vCPU thread aio_poll() entirely and addresses the root cause.

This patch series implements this idea. qemu-iotests is sensitive to the exact
order in which QMP events and responses are emitted. Running QMP handlers in
the iohandler AioContext causes some QMP events to be ordered differently than
before. It is therefore necessary to adjust the reference output in many test
cases. The actual QMP code change is small and everything else is just to make
qemu-iotests happy.

This seems to be -stable material too, once it is applied to master.
It's difficult for me to catch the issue (#1933 @gitlab) locally, but I did
have some success there, and it always work after this patch is applied.
It also seem to work fine on 7.2, not only on 8.2, fwiw.

Thanks,

/mjt



reply via email to

[Prev in Thread] Current Thread [Next in Thread]