* Markus Armbruster ([email protected]) wrote:
> "Dr. David Alan Gilbert (git)" <[email protected]> writes:
>
> > From: Igor Mammedov <[email protected]>
> >
> > subj commands, are informational and do not depend on machine being
> > initialized. Make them available early in preconfig runstate to make
> > the later a little bit more useful.
> >
> > Signed-off-by: Igor Mammedov <[email protected]>
>
> Excessively long subject line. Suggested fix:
>
> qmp: Enable a few query- commands in preconfig state
>
> Commands query-chardev, query-version, query-name, query-uuid,
> query-iothreads, query-memdev are informational and do not depend on
> the machine being initialized. Make them available in preconfig
> runstate to make the latter a little bit more useful.
>
> > ---
> > qapi/char.json | 3 ++-
> > qapi/misc.json | 12 +++++++-----
> > 2 files changed, 9 insertions(+), 6 deletions(-)
> >
> > diff --git a/qapi/char.json b/qapi/char.json
> > index ae19dcd1ed..60f31d83fc 100644
> > --- a/qapi/char.json
> > +++ b/qapi/char.json
> > @@ -62,7 +62,8 @@
> > # }
> > #
> > ##
> > -{ 'command': 'query-chardev', 'returns': ['ChardevInfo'] }
> > +{ 'command': 'query-chardev', 'returns': ['ChardevInfo'],
> > + 'allow-preconfig': true }
>
> Okay because
>
> if (qemu_opts_foreach(qemu_find_opts("chardev"),
> chardev_init_func, NULL, NULL)) {
> exit(1);
> }
>
> runs before -preconfig's main_loop().
>
> >
> > ##
> > # @ChardevBackendInfo:
> > diff --git a/qapi/misc.json b/qapi/misc.json
> > index f83a63a0ab..1be1728c0e 100644
> > --- a/qapi/misc.json
> > +++ b/qapi/misc.json
> > @@ -117,7 +117,8 @@
> > # }
> > #
> > ##
> > -{ 'command': 'query-version', 'returns': 'VersionInfo' }
> > +{ 'command': 'query-version', 'returns': 'VersionInfo',
> > + 'allow-preconfig': true }
>
> Returns data fixed at compile time. Okay.
>
> >
> > ##
> > # @CommandInfo:
> > @@ -241,7 +242,7 @@
> > # <- { "return": { "name": "qemu-name" } }
> > #
> > ##
> > -{ 'command': 'query-name', 'returns': 'NameInfo' }
> > +{ 'command': 'query-name', 'returns': 'NameInfo', 'allow-preconfig': true }
>
> Okay because parse_name() runs before -preconfig's main_loop().
>
> > ##
> > # @KvmInfo:
> > @@ -301,7 +302,7 @@
> > # <- { "return": { "UUID": "550e8400-e29b-41d4-a716-446655440000" } }
> > #
> > ##
> > -{ 'command': 'query-uuid', 'returns': 'UuidInfo' }
> > +{ 'command': 'query-uuid', 'returns': 'UuidInfo', 'allow-preconfig': true }
>
> Okay because qemu_uuid(optarg, &qemu_uuid) runs before -preconfig's
> main_loop().
>
> >
> > ##
> > # @EventInfo:
> > @@ -710,7 +711,8 @@
> > # }
> > #
> > ##
> > -{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'] }
> > +{ 'command': 'query-iothreads', 'returns': ['IOThreadInfo'],
> > + 'allow-preconfig': true }
>
> Feeling lazy... why is this one okay?
Because it's a walk of the entire object tree; with
object_get_objects_root() - assuming the object tree exists we're safe.
> >
> > ##
> > # @BalloonInfo:
> > @@ -2902,7 +2904,7 @@
> > # }
> > #
> > ##
> > -{ 'command': 'query-memdev', 'returns': ['Memdev'] }
> > +{ 'command': 'query-memdev', 'returns': ['Memdev'], 'allow-preconfig':
> > true }
> >
> > ##
> > # @PCDIMMDeviceInfo:
>
> And this one?
Same trick as query-iothreads.
Dave
--
Dr. David Alan Gilbert / [email protected] / Manchester, UK