[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 27/36] vl: remove separate preconfig main_loop
From: |
Igor Mammedov |
Subject: |
Re: [PATCH 27/36] vl: remove separate preconfig main_loop |
Date: |
Mon, 30 Nov 2020 13:46:04 +0100 |
On Mon, 23 Nov 2020 09:14:26 -0500
Paolo Bonzini <pbonzini@redhat.com> wrote:
> Move post-preconfig initialization to the x-exit-preconfig. If preconfig
> is not requested, just exit preconfig mode immediately with the QMP
> command.
>
> As a result, the preconfig loop will run with accel_setup_post
> and os_setup_post restrictions (xen_restrict, chroot, etc.)
> already done.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
with a comment at qmp_x_exit_preconfig():
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
[...]
> diff --git a/softmmu/vl.c b/softmmu/vl.c
> index 95c62bdad4..aa11fc4871 100644
> --- a/softmmu/vl.c
> +++ b/softmmu/vl.c
[...]
> @@ -3517,6 +3507,43 @@ static void qemu_machine_creation_done(void)
> register_global_state();
> }
>
> +void qmp_x_exit_preconfig(Error **errp)
this needs a comment that it shouldn't be split without taking care of
qmp commands that were allowed to be called before qemu_init_board(),
otherwise there would be nothing to remind us about it.
> +{
> + if (qdev_hotplug) {
> + error_setg(errp, "The command is permitted only before machine
> initialization");
> + return;
> + }
> +
> + qemu_init_board();
> + qemu_create_cli_devices();
> + qemu_machine_creation_done();
> +
> + if (loadvm) {
> + Error *local_err = NULL;
> + if (load_snapshot(loadvm, &local_err) < 0) {
> + error_report_err(local_err);
> + autostart = 0;
> + exit(1);
> + }
> + }
> + if (replay_mode != REPLAY_MODE_NONE) {
> + replay_vmstate_init();
> + }
> +
> + if (incoming) {
> + Error *local_err = NULL;
> + if (strcmp(incoming, "defer") != 0) {
> + qmp_migrate_incoming(incoming, &local_err);
> + if (local_err) {
> + error_reportf_err(local_err, "-incoming %s: ", incoming);
> + exit(1);
> + }
> + }
> + } else if (autostart) {
> + qmp_cont(NULL);
> + }
> +}
> +
> void qemu_init(int argc, char **argv, char **envp)
> {
> QemuOpts *opts;
[...]
- Re: [PATCH 30/36] vl: extract machine done notifiers, (continued)
- [PATCH 31/36] vl: extract softmmu/rtc.c, Paolo Bonzini, 2020/11/23
- [PATCH 19/36] vl: separate qemu_apply_machine_options, Paolo Bonzini, 2020/11/23
- [PATCH 29/36] vl: extract softmmu/datadir.c, Paolo Bonzini, 2020/11/23
- [PATCH 24/36] vl: start VM via qmp_cont, Paolo Bonzini, 2020/11/23
- [PATCH 36/36] vl: move all generic initialization out of vl.c, Paolo Bonzini, 2020/11/23
- [PATCH 27/36] vl: remove separate preconfig main_loop, Paolo Bonzini, 2020/11/23
- Re: [PATCH 27/36] vl: remove separate preconfig main_loop,
Igor Mammedov <=
- [PATCH 32/36] vl: extract softmmu/runstate.c, Paolo Bonzini, 2020/11/23
- [PATCH 33/36] vl: extract softmmu/globals.c, Paolo Bonzini, 2020/11/23
- [PATCH 35/36] vl: clean up -boot variables, Paolo Bonzini, 2020/11/23
- [PATCH 34/36] vl: remove serial_max_hds, Paolo Bonzini, 2020/11/23
- [PATCH 37/36] machine: introduce MachineInitPhase, Paolo Bonzini, 2020/11/27