[PATCH 0/3] domain capabilites improvements

Peter Krempa pkrempa at redhat.com
Thu Sep 8 07:52:20 UTC 2022


On Wed, Sep 07, 2022 at 15:20:44 -0600, Jim Fehlig wrote:
> On 9/6/22 14:42, Jim Fehlig wrote:
> > The first two patches add USB redirect and channel devices to
> > domcapabilities. Patch3 fixes reporting of spice support.
> > 
> > Patch1 was sent previously, before I noticed the others were needed
> 
> Another capability I'd like to expose is the functionality provided by
> qemu's audio-spice module, which IIUC is essentially `-audiodev spice`.
> After peeking at the qmp ref manual [1] I expected to find an "audiodev"
> object, however
> 
> # virsh qemu-monitor-command test \
>   --cmd '{"execute":"qom-list-types"}' | grep -i audiodev
> #
> # virsh qemu-monitor-command test --cmd \
>   '{"execute":"qom-list-properties","arguments":{"typename":"audiodev"}}'
> {"id":"libvirt-411","error":{"class":"DeviceNotFound","desc":"Class
> 'audiodev' not found"}}
> # virsh qemu-monitor-command test --cmd \
>   '{"execute":"device-list-properties","arguments":{"typename":"audiodev"}}'
> {"id":"libvirt-412","error":{"class":"DeviceNotFound","desc":"Device
> 'audiodev' not found"}}
> 
> Command line help is not available either, which spawned Claudio's qemu patch [2]
> 
> # qemu-system-x86_64 -audiodev help
> qemu-system-x86_64: -audiodev help: Help is not available for this option

In cases where a command line option parser in qemu was implemented via
the modern QOM based approach, but at the same time is not runtime
configurable or queryable via the monitor it's not possible for libvirt
to detect the options.

Historically command line arguments could be queried via
'query-command-line-options' command but that was deemed to be
un-extendible and new code is not getting coverage. At the same time
libvirt is trying to decrease the reliance on the command to allow
deprecation and promote some form of replacement.

We had a similar problem for graphics options, which was side-stepped by
implementing 'query-display-options' which in turn exposed all the
objects in the QMP schema (query-qmp-schema) which allowed us to detet
graphics related functionality.

At this point we e.g. assume that the modern -audiodev is present. For
few specific configs we validate that the appropriate graphics protocol
is used for the VM but don't validate anything else.

For your specific query, the spice backend for audio is allowed only
when spice video is enabled anyways, so the capability you are
suggesting does not seem to be that much interesting as the decision can
be based on the graphics protocol support.


More information about the libvir-list mailing list