From: "Daniel P. Berrangé" <berrange@redhat.com>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>
Cc: "Thomas Huth" <thuth@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Eric Blake" <eblake@redhat.com>,
qemu-devel@nongnu.org, "Gerd Hoffmann" <kraxel@redhat.com>,
"Volker Rümelin" <vr_qemu@t-online.de>,
"Christian Schoenebeck" <qemu_oss@crudebyte.com>
Subject: Re: [PATCH v2 1/2] qapi, audio: add query-audiodev command
Date: Mon, 23 Jan 2023 12:09:41 +0000 [thread overview]
Message-ID: <Y855BSwizi0n+w7r@redhat.com> (raw)
In-Reply-To: <c94b801d-3c19-24c7-505a-7ab0d98faa67@linaro.org>
On Mon, Jan 23, 2023 at 01:05:45PM +0100, Philippe Mathieu-Daudé wrote:
> On 23/1/23 12:11, Daniel P. Berrangé wrote:
> > On Mon, Jan 23, 2023 at 10:20:29AM +0100, Philippe Mathieu-Daudé wrote:
> > > On 23/1/23 09:39, Thomas Huth wrote:
> > > > From: Daniel P. Berrangé <berrange@redhat.com>
> > > >
> > > > Way back in QEMU 4.0, the -audiodev command line option was introduced
> > > > for configuring audio backends. This CLI option does not use QemuOpts
> > > > so it is not visible for introspection in 'query-command-line-options',
> > > > instead using the QAPI Audiodev type. Unfortunately there is also no
> > > > QMP command that uses the Audiodev type, so it is not introspectable
> > > > with 'query-qmp-schema' either.
> > > >
> > > > This introduces a 'query-audiodev' command that simply reflects back
> > > > the list of configured -audiodev command line options. This alone is
> > > > maybe not very useful by itself, but it makes Audiodev introspectable
> > > > via 'query-qmp-schema', so that libvirt (and other upper layer tools)
> > > > can discover the available audiodevs.
> > > >
> > > > Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> > > > [thuth: Update for upcoming QEMU v8.0, and use QAPI_LIST_PREPEND]
> > > > Signed-off-by: Thomas Huth <thuth@redhat.com>
> > > > ---
> > > > qapi/audio.json | 13 +++++++++++++
> > > > audio/audio.c | 12 ++++++++++++
> > > > 2 files changed, 25 insertions(+)
> > > >
> > > > diff --git a/qapi/audio.json b/qapi/audio.json
> > > > index 1e0a24bdfc..c7aafa2763 100644
> > > > --- a/qapi/audio.json
> > > > +++ b/qapi/audio.json
> > > > @@ -443,3 +443,16 @@
> > > > 'sndio': 'AudiodevSndioOptions',
> > > > 'spice': 'AudiodevGenericOptions',
> > > > 'wav': 'AudiodevWavOptions' } }
> > > > +
> > > > +##
> > > > +# @query-audiodevs:
> > > > +#
> > > > +# Returns information about audiodev configuration
> > >
> > > Maybe clearer as 'audio backends'?
> > >
> > > So similarly, wouldn't be clearer to name this command
> > > 'query-audio-backends'? Otherwise we need to go read QEMU
> > > source to understand what is 'audiodevs'.
> >
> > The command line parameter is called '-audiodev' and this
> > query-audiodevs command reports the same data, so that
> > looks easy enough to understand IMHO.
> >
> > > > +#
> > > > +# Returns: array of @Audiodev
> > > > +#
> > > > +# Since: 8.0
> > > > +#
> > > > +##
> > > > +{ 'command': 'query-audiodevs',
> > > > + 'returns': ['Audiodev'] }
> > > > diff --git a/audio/audio.c b/audio/audio.c
> > > > index d849a94a81..6f270c07b7 100644
> > > > --- a/audio/audio.c
> > > > +++ b/audio/audio.c
> > > > @@ -28,8 +28,10 @@
> > > > #include "monitor/monitor.h"
> > > > #include "qemu/timer.h"
> > > > #include "qapi/error.h"
> > > > +#include "qapi/clone-visitor.h"
> > > > #include "qapi/qobject-input-visitor.h"
> > > > #include "qapi/qapi-visit-audio.h"
> > > > +#include "qapi/qapi-commands-audio.h"
> > > > #include "qemu/cutils.h"
> > > > #include "qemu/module.h"
> > > > #include "qemu/help_option.h"
> > > > @@ -2311,3 +2313,13 @@ size_t audio_rate_get_bytes(RateCtl *rate, struct audio_pcm_info *info,
> > > > return bytes;
> > > > }
> > > > +
> > > > +AudiodevList *qmp_query_audiodevs(Error **errp)
> > > > +{
> > > > + AudiodevList *ret = NULL;
> > > > + AudiodevListEntry *e;
> > > > + QSIMPLEQ_FOREACH(e, &audiodevs, next) {
> > >
> > > I am a bit confused here, isn't &audiodevs containing what the user provided
> > > from CLI? How is that useful to libvirt? Maybe the corner case
> > > of a user hand-modifying the QEMU launch arguments from a XML config?
> > >
> > > Wouldn't a list of linked in AudiodevDriver be more useful to libvirt
> > > so it could pick the best available backend to start a VM?
> >
> > On the libvirt side we're never going to need to actually call the
> > query-audiodevs commands. The mere existance of the command, means
> > that the QMP schema now exposes information about what audio backends
> > have been compiled into the binary. This is the same trick we've used
> > for other aspects of QMP. IOW we don't need a separate command just
> > for the purpose of listing AudiodevDrivers.
>
> I understand having "what audio backends have been compiled into the
> binary" is useful, but I am missing how you get that from &audiodevs.
>
> AFAICT &audiodevs is for the CLI parsed backends, not all the backends
> linked within a binary. I probably need sugar / coffee and will revisit
> after lunch.
It ties into the 'query-qmp-schema' command, along with patch #2 in
this series.
The query-audiodevs command will cause the 'AudiodevDriver' enum to
be reported in the 'query-qmp-schema' response. Patch #2, makes all
the AudiodevDriver enum entries conditional on CONFIG_XXXX.
IOW now query-qmp-schema data will tell you what AudiodevDriver
backends are compiled into the binary you're talking to.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2023-01-23 12:10 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-23 8:39 [PATCH v2 0/2] audio: make audiodev introspectable by management apps Thomas Huth
2023-01-23 8:39 ` [PATCH v2 1/2] qapi, audio: add query-audiodev command Thomas Huth
2023-01-23 9:20 ` Philippe Mathieu-Daudé
2023-01-23 11:11 ` Daniel P. Berrangé
2023-01-23 12:05 ` Philippe Mathieu-Daudé
2023-01-23 12:09 ` Daniel P. Berrangé [this message]
2023-01-25 11:06 ` Thomas Huth
2023-01-25 12:06 ` Daniel P. Berrangé
2023-01-25 12:04 ` Philippe Mathieu-Daudé
2023-01-23 8:39 ` [PATCH v2 2/2] qapi, audio: Make introspection reflect build configuration more closely Thomas Huth
2023-01-31 10:09 ` [PATCH v2 0/2] audio: make audiodev introspectable by management apps Thomas Huth
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=Y855BSwizi0n+w7r@redhat.com \
--to=berrange@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=kraxel@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu_oss@crudebyte.com \
--cc=thuth@redhat.com \
--cc=vr_qemu@t-online.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.