On Tue, Jun 23, 2026 at 10:55:16 +0100, Daniel P. Berrangé via Devel wrote:
> Conceptually -object and object_add/object_del should be sufficient
> for essentially all QEMU configuration....if only we ported all our
> internal custom backends/devices/etc to QOM. That is of course a big
> job which is why it hasn't happened.
> 
> This series started with the premise that the monitor is one of the
> easier areas to convert since we have no more than three classes,
> a common base, and QMP and HMP subclasses[1]. So why not give it a
> go and thus unlock the ability to dynamically create/delete monitors
> in QMP/HMP.
> 
> This series does the conversion in a great many small steps to better
> understand the implications at each stage.
> 
> The high level outcome of this series is
> 
>  * HMP and QMP monitors are QOM objects, 'monitor-hmp' and
>    'monitor-qmp' respectively
> 
>  * Both can be cold plugged and hot plugged. QMP only, can
>    also be hot unplugged.
> 
>  * '-mon' is obsolete, deprecated and replaced by '-object',
>    but -monitor, -qmp and kept  as high level syntax sugar

I was giving this a spin by implementing libvirt support for it. The
basic usage seems to work well but I've encoutered a regression in
behaviour which happens both when the QMP monitor is instantiated using
the new syntax but also the old one
( -mon chardev=charmonitor,id=monitor,mode=control)

When libvirt wants to re-connect to a qemu running with these patches it
re-issues a 'qmp_capabilities' command after connecting.

With these patches qemu does not respond to that command even when the
old syntax is used. This makes libvirt stuck when re-connecting to VMs.

The log on libvirt's side is not very interesting:

2026-06-23 11:00:11.229+0000: 529808: debug : 
virSecuritySELinuxSetDaemonSocketLabel:3190 : Setting VM ha socket context 
unconfined_u:unconfined_r:unconfined_t:s0:c677,c680
2026-06-23 11:00:11.229+0000: 529807: info : qemuMonitorOpenInternal:608 : 
QEMU_MONITOR_NEW: mon=0x7fff94001b80 fd=35
2026-06-23 11:00:11.229+0000: 529807: debug : 
qemuDomainObjEnterMonitorInternal:5165 : Entering monitor (mon=0x7fff94001b80 
vm=0x7fffac185b60 name=cd)
2026-06-23 11:00:11.229+0000: 529807: debug : qemuMonitorSetCapabilities:1437 : 
mon:0x7fff94001b80 vm:0x7fffac185b60 monfd:35
2026-06-23 11:00:11.229+0000: 529807: info : qemuMonitorSend:822 : 
QEMU_MONITOR_SEND_MSG: mon=0x7fff94001b80 
msg={"execute":"qmp_capabilities","id":"libvirt-1"}^M

as nothing else ever comes from monitor 0x7fff94001b80

Reply via email to