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.