From: Igor Mammedov <imammedo@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org, peter.maydell@linaro.org,
pkrempa@redhat.com, cohuck@redhat.com, armbru@redhat.com,
pbonzini@redhat.com, david@gibson.dropbear.id.au
Subject: Re: [Qemu-devel] [PATCH v4 5/9] qapi: introduce new cmd option "allowed-in-preconfig"
Date: Thu, 29 Mar 2018 11:53:55 +0200 [thread overview]
Message-ID: <20180329115355.2166bde1@redhat.com> (raw)
In-Reply-To: <20180328193016.GS5046@localhost.localdomain>
On Wed, 28 Mar 2018 16:30:16 -0300
Eduardo Habkost <ehabkost@redhat.com> wrote:
> On Wed, Mar 28, 2018 at 02:29:57PM +0200, Igor Mammedov wrote:
> > On Fri, 23 Mar 2018 18:28:37 -0300
> > Eduardo Habkost <ehabkost@redhat.com> wrote:
> >
> > > On Mon, Mar 12, 2018 at 02:11:11PM +0100, Igor Mammedov wrote:
> > > > New option will be used to allow commands, which are prepared/need
> > > > to run run in preconfig state. Other commands that should be able
> > > > to run in preconfig state, should be ammeded to not expect machine
> > > > in initialized state or deal with it.
> > > >
> > > > For compatibility reasons, commands, that don't use new flag
> > > > 'allowed-in-preconfig' explicitly, are not permited to run in
> > > > preconfig state but allowed in all other states like they used
> > > > to be.
> > > >
> > > > Within this patch allow following commands in preconfig state:
> > > > qmp_capabilities
> > > > query-qmp-schema
> > > > query-commands
> > > > query-status
> > > > cont
> > > > to allow qmp connection, basic introspection and moving to the next
> > > > state.
> > > >
> > > > PS:
> > > > set-numa-node and query-hotpluggable-cpus will be enabled later in
> > > > a separate patch.
> > > >
> > > > Signed-off-by: Igor Mammedov <imammedo@redhat.com>
> > >
> > > I didn't review the code yet, but:
> > >
> > > Shouldn't this be applied before patch 3/9, for bisectability?
> > > Otherwise it will be very easy to crash QEMU after applying patch
> > > 3/9.
> > no, it isn't going to work.
> > This patch depends on RUN_STATE_PRECONFIG that is introduced in 3/9.
> >
> > It could be fine to merge into 3/9 during merge, but then history
> > wise it would be difficult to read it later with 2 big and mostly
> > separate changes within one patch.
>
> Yeah, I don't think squashing would be the right answer.
>
> >
> > Considering -preconfig if off by default it shouldn't affect
> > bisectability in general so I'd keep current patch order.
>
> Well, it would affect bisectability if debugging a crash that
> happens using -preconfig.
>
> The only hunk in this patch that really depends on patch 3/9
> seems to be:
>
> @@ -92,6 +93,13 @@ static QObject *do_qmp_dispatch(QmpCommandList *cmds, QObject *request,
> return NULL;
> }
>
> + if (runstate_check(RUN_STATE_PRECONFIG) &&
> + !(cmd->options & QCO_ALLOWED_IN_PRECONFIG)) {
> + error_setg(errp, "The command '%s' isn't permitted in '%s' state",
> + cmd->name, RunState_str(RUN_STATE_PRECONFIG));
> + return NULL;
> + }
> +
> if (!qdict_haskey(dict, "arguments")) {
> args = qdict_new();
> } else {
>
>
> What about moving it to patch 3/9?
By itself it won't work but with moving following hunk with it
@@ -21,7 +21,8 @@ typedef void (QmpCommandFunc)(QDict *, QObject **, Error **);
typedef enum QmpCommandOptions
{
QCO_NO_OPTIONS = 0x0,
- QCO_NO_SUCCESS_RESP = 0x1,
+ QCO_NO_SUCCESS_RESP = 1U << 0,
+ QCO_ALLOWED_IN_PRECONFIG = 1U << 1,
} QmpCommandOptions;
it should compile and do proper check in above hunk.
I'll try to do it and see if it works.
> Or, an alternative is to move the following hunk from patch 3/9 to this patch:
>
> diff --git a/qapi/run-state.json b/qapi/run-state.json
> index 1c9fff3aef..ce846a570e 100644
> --- a/qapi/run-state.json
> +++ b/qapi/run-state.json
> @@ -49,12 +49,15 @@
> # @colo: guest is paused to save/restore VM state under colo checkpoint,
> # VM can not get into this state unless colo capability is enabled
> # for migration. (since 2.8)
> +# @preconfig: QEMU is paused before board specific init callback is executed.
> +# The state is reachable only if -preconfig CLI option is used.
> +# (Since 2.12)
> ##
> { 'enum': 'RunState',
> 'data': [ 'debug', 'inmigrate', 'internal-error', 'io-error', 'paused',
> 'postmigrate', 'prelaunch', 'finish-migrate', 'restore-vm',
> 'running', 'save-vm', 'shutdown', 'suspended', 'watchdog',
> - 'guest-panicked', 'colo' ] }
> + 'guest-panicked', 'colo', 'preconfig' ] }
>
> ##
> # @StatusInfo:
>
> Which could be an interesting idea, because the QAPI schema
> changes would be all grouped inside a single patch, and then
> followed by the actual implementation of the -preconfig option.
it won't really work as this enum generates RUN_STATE_PRECONFIG,
which is used by 3/9
next prev parent reply other threads:[~2018-03-29 9:54 UTC|newest]
Thread overview: 65+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-12 13:11 [Qemu-devel] [PATCH v4 0/9] enable numa configuration before machine_init() from QMP Igor Mammedov
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 1/9] numa: postpone options post-processing till machine_run_board_init() Igor Mammedov
2018-03-23 20:34 ` Eduardo Habkost
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 2/9] numa: split out NumaOptions parsing into parse_NumaOptions() Igor Mammedov
2018-03-23 20:42 ` Eduardo Habkost
2018-03-23 20:49 ` Eric Blake
2018-03-23 21:09 ` Eduardo Habkost
2018-03-26 8:38 ` Laurent Vivier
2018-03-26 14:33 ` Eric Blake
2018-03-27 13:08 ` Igor Mammedov
2018-03-28 18:54 ` Eduardo Habkost
2018-03-29 13:05 ` Igor Mammedov
2018-03-29 16:31 ` Eduardo Habkost
2018-04-03 13:55 ` Igor Mammedov
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 3/9] cli: add -preconfig option Igor Mammedov
2018-03-23 21:02 ` Eric Blake
2018-03-23 21:05 ` Eduardo Habkost
2018-03-23 21:25 ` Eduardo Habkost
2018-03-27 15:05 ` Igor Mammedov
2018-03-28 11:48 ` Igor Mammedov
2018-03-28 19:21 ` Eduardo Habkost
2018-03-29 11:43 ` Igor Mammedov
2018-03-29 16:24 ` Eduardo Habkost
2018-04-03 14:32 ` Igor Mammedov
2018-04-03 15:31 ` Eduardo Habkost
2018-04-04 8:51 ` Igor Mammedov
2018-03-28 19:17 ` Eduardo Habkost
2018-03-29 13:01 ` Igor Mammedov
2018-03-29 16:57 ` Eduardo Habkost
2018-04-03 10:41 ` Peter Krempa
2018-04-03 13:49 ` Igor Mammedov
2018-04-03 13:52 ` Eduardo Habkost
2018-04-30 19:12 ` Dr. David Alan Gilbert
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 4/9] hmp: disable monitor in preconfig state Igor Mammedov
2018-03-23 21:27 ` Eduardo Habkost
2018-03-28 11:16 ` Igor Mammedov
2018-03-28 18:55 ` Eduardo Habkost
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 5/9] qapi: introduce new cmd option "allowed-in-preconfig" Igor Mammedov
2018-03-23 21:11 ` Eric Blake
2018-03-28 15:23 ` Igor Mammedov
2018-03-23 21:28 ` Eduardo Habkost
2018-03-28 12:29 ` Igor Mammedov
2018-03-28 19:30 ` Eduardo Habkost
2018-03-29 9:53 ` Igor Mammedov [this message]
2018-03-29 12:21 ` Eduardo Habkost
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 6/9] tests: extend qmp test with preconfig checks Igor Mammedov
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 7/9] qmp: permit query-hotpluggable-cpus in preconfig state Igor Mammedov
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 8/9] qmp: add set-numa-node command Igor Mammedov
2018-03-12 13:11 ` [Qemu-devel] [PATCH v4 9/9] tests: functional tests for QMP command set-numa-node Igor Mammedov
2018-04-17 14:13 ` [Qemu-devel] [PATCH v4 0/9] enable numa configuration before machine_init() from QMP Markus Armbruster
2018-04-17 14:27 ` Eduardo Habkost
2018-04-17 15:41 ` Igor Mammedov
2018-04-17 20:41 ` Eduardo Habkost
2018-04-18 7:08 ` Markus Armbruster
2018-04-19 8:00 ` Igor Mammedov
2018-04-19 19:42 ` Eduardo Habkost
2018-04-20 6:31 ` Markus Armbruster
2018-04-23 9:50 ` Igor Mammedov
2018-04-23 13:05 ` Eduardo Habkost
2018-04-23 16:55 ` Igor Mammedov
2018-04-23 20:45 ` Eduardo Habkost
2018-04-26 14:39 ` Igor Mammedov
2018-04-26 14:55 ` Eric Blake
2018-04-27 12:19 ` Igor Mammedov
2018-04-20 5:23 ` David Gibson
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=20180329115355.2166bde1@redhat.com \
--to=imammedo@redhat.com \
--cc=armbru@redhat.com \
--cc=cohuck@redhat.com \
--cc=david@gibson.dropbear.id.au \
--cc=ehabkost@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pkrempa@redhat.com \
--cc=qemu-devel@nongnu.org \
/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.