All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH v2 00/37] cleanup qemu_init and make sense of command line processing
@ 2020-10-27 18:21 Paolo Bonzini
  2020-10-27 18:21 ` [PATCH 01/29] trace: remove argument from trace_init_file Paolo Bonzini
                   ` (29 more replies)
  0 siblings, 30 replies; 78+ messages in thread
From: Paolo Bonzini @ 2020-10-27 18:21 UTC (permalink / raw)
  To: qemu-devel

The main improvements with respect to v1 are:

- further extraction of various phases of command line processing and VM
  creation to separate function;

- removing the preconfig main_loop: the VM is effectively always starting
  as if -preconfig was specified, it just executes automatically if not
  requested.  This enables "-incoming defer" to be specified together
  with "-preconfig".

I have other patches with which I could configure the VM like

  $ qemu -vnc :0 -monitor stdio -preconfig
    ... in theory blockdev-add and other backend creation would go here...
  (qemu) x-create-onboard-devices
  (qemu) device_add virtio-mouse-pci
  (qemu) cont

Here, x-create-onboard-devices creates enough of the machine to make
it possible to issue device_add monitor commands equivalent to
the -device command line.

However, I'm not posting that part because the above is not the
final state of the QMP interface.  The final QMP interface would have
three commands (machine-set, accel-set, machine-set-memory) that
bring the VM through successive phases of initialization corresponding
roughly to qemu_apply_machine_options (-smp, -boot, -M, -cpu?),
configure_accelerators (-accel) and qemu_finish_machine_init (-m, -M memdev);
after these three steps, one of migrate-incoming, cont, loadvm or
finish-machine-init (the latter of which is equivalent to -S on the
command line) leaves preconfig mode.  For more information see
https://wiki.qemu.org/User:Paolo_Bonzini/Machine_init_sequence#Basic_phases.

Based-on: <20201026143028.3034018-1-pbonzini@redhat.com>

Paolo Bonzini (29):
  trace: remove argument from trace_init_file
  semihosting: fix order of initialization functions
  vl: extract validation of -smp to machine.c
  vl: remove bogus check
  vl: split various early command line options to a separate function
  vl: move various initialization routines out of qemu_init
  vl: extract qemu_init_subsystems
  vl: move prelaunch part of qemu_init to new functions
  vl: extract various command line validation snippets to a new function
  vl: preconfig and loadvm are mutually exclusive
  vl: extract various command line desugaring snippets to a new function
  vl: create "-net nic -net user" default earlier
  vl: load plugins as late as possible
  vl: move semihosting command line fallback to qemu_finish_machine_init
  vl: extract default devices to separate functions
  vl: move CHECKPOINT_INIT after preconfig
  vl: separate qemu_create_early_backends
  vl: separate qemu_create_late_backends
  vl: separate qemu_create_machine
  vl: separate qemu_apply_machine_options
  vl: separate qemu_resolve_machine_memdev
  vl: initialize displays before preconfig loop
  vl: move -global check earlier
  migration, vl: start migration via qmp_migrate_incoming
  vl: start VM via qmp_cont
  hmp: introduce cmd_available
  remove preconfig state
  vl: remove separate preconfig main_loop
  vl: allow -incoming defer with -preconfig

 bsd-user/main.c                      |    6 +-
 hw/core/machine-qmp-cmds.c           |    5 +-
 hw/core/machine.c                    |   27 +
 include/hw/boards.h                  |    1 +
 include/hw/qdev-core.h               |    8 -
 include/migration/misc.h             |    1 -
 include/qapi/qmp/dispatch.h          |    1 +
 include/sysemu/runstate.h            |    1 -
 linux-user/main.c                    |    6 +-
 migration/migration.c                |   37 +-
 monitor/hmp.c                        |   23 +-
 monitor/qmp-cmds.c                   |   10 -
 qapi/qmp-dispatch.c                  |    5 +-
 qapi/run-state.json                  |    5 +-
 qemu-img.c                           |    6 +-
 qemu-io.c                            |    6 +-
 qemu-nbd.c                           |    6 +-
 scsi/qemu-pr-helper.c                |    6 +-
 softmmu/qdev-monitor.c               |   18 +-
 softmmu/vl.c                         | 1796 +++++++++++++-------------
 storage-daemon/qemu-storage-daemon.c |    9 +-
 stubs/meson.build                    |    1 +
 stubs/qmp-command-available.c        |    7 +
 trace/control.c                      |   10 +-
 trace/control.h                      |   12 +-
 25 files changed, 1021 insertions(+), 992 deletions(-)
 create mode 100644 stubs/qmp-command-available.c

-- 
2.26.2



^ permalink raw reply	[flat|nested] 78+ messages in thread

end of thread, other threads:[~2020-12-02 15:10 UTC | newest]

Thread overview: 78+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-27 18:21 [RFC PATCH v2 00/37] cleanup qemu_init and make sense of command line processing Paolo Bonzini
2020-10-27 18:21 ` [PATCH 01/29] trace: remove argument from trace_init_file Paolo Bonzini
2020-10-27 18:21 ` [PATCH 02/29] semihosting: fix order of initialization functions Paolo Bonzini
2020-10-27 18:21 ` [PATCH 03/29] vl: extract validation of -smp to machine.c Paolo Bonzini
2020-10-28 16:32   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 04/29] vl: remove bogus check Paolo Bonzini
2020-10-28 16:48   ` Igor Mammedov
2020-10-28 16:55     ` Daniel P. Berrangé
2020-10-28 19:32   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 05/29] vl: split various early command line options to a separate function Paolo Bonzini
2020-11-02 15:30   ` Igor Mammedov
2020-11-02 16:33     ` Paolo Bonzini
2020-10-27 18:21 ` [PATCH 06/29] vl: move various initialization routines out of qemu_init Paolo Bonzini
2020-11-02 15:40   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 07/29] vl: extract qemu_init_subsystems Paolo Bonzini
2020-11-02 15:55   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 08/29] vl: move prelaunch part of qemu_init to new functions Paolo Bonzini
2020-11-11 19:29   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 09/29] vl: extract various command line validation snippets to a new function Paolo Bonzini
2020-11-11 19:39   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 10/29] vl: preconfig and loadvm are mutually exclusive Paolo Bonzini
2020-11-11 19:58   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 11/29] vl: extract various command line desugaring snippets to a new function Paolo Bonzini
2020-11-11 19:57   ` Igor Mammedov
2020-11-11 20:04     ` Paolo Bonzini
2020-11-18 16:55       ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 12/29] vl: create "-net nic -net user" default earlier Paolo Bonzini
2020-11-18 14:43   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 13/29] vl: load plugins as late as possible Paolo Bonzini
2020-10-27 18:21 ` [PATCH 14/29] vl: move semihosting command line fallback to qemu_finish_machine_init Paolo Bonzini
2020-10-27 18:21 ` [PATCH 15/29] vl: extract default devices to separate functions Paolo Bonzini
2020-10-27 18:21 ` [PATCH 16/29] vl: move CHECKPOINT_INIT after preconfig Paolo Bonzini
2020-10-27 18:21 ` [PATCH 17/29] vl: separate qemu_create_early_backends Paolo Bonzini
2020-11-18 16:29   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 18/29] vl: separate qemu_create_late_backends Paolo Bonzini
2020-11-18 16:33   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 19/29] vl: separate qemu_create_machine Paolo Bonzini
2020-11-18 16:45   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 20/29] vl: separate qemu_apply_machine_options Paolo Bonzini
2020-11-18 16:57   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 21/29] vl: separate qemu_resolve_machine_memdev Paolo Bonzini
2020-11-20 13:15   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 22/29] vl: initialize displays before preconfig loop Paolo Bonzini
2020-11-20 15:11   ` Igor Mammedov
2020-11-20 15:53     ` Paolo Bonzini
2020-11-20 16:32       ` Igor Mammedov
2020-11-20 16:46         ` Paolo Bonzini
2020-11-20 17:11           ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 23/29] vl: move -global check earlier Paolo Bonzini
2020-11-20 15:10   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 24/29] migration, vl: start migration via qmp_migrate_incoming Paolo Bonzini
2020-11-20 15:34   ` Igor Mammedov
2020-11-20 16:02     ` Paolo Bonzini
2020-12-02 13:10       ` Dr. David Alan Gilbert
2020-12-02 13:15         ` Daniel P. Berrangé
2020-12-02 13:29           ` Paolo Bonzini
2020-12-02 13:36         ` Paolo Bonzini
2020-12-02 15:08           ` Dr. David Alan Gilbert
2020-10-27 18:21 ` [PATCH 25/29] vl: start VM via qmp_cont Paolo Bonzini
2020-11-20 16:08   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 26/29] hmp: introduce cmd_available Paolo Bonzini
2020-11-20 15:46   ` Igor Mammedov
2020-10-27 18:21 ` [PATCH 27/29] remove preconfig state Paolo Bonzini
2020-11-20 16:01   ` Igor Mammedov
2020-11-20 16:22     ` Paolo Bonzini
2020-10-27 18:21 ` [PATCH 28/29] vl: remove separate preconfig main_loop Paolo Bonzini
2020-11-20 16:26   ` Igor Mammedov
2020-11-20 16:39     ` Paolo Bonzini
2020-11-23  8:34     ` Paolo Bonzini
2020-10-27 18:21 ` [PATCH 29/29] vl: allow -incoming defer with -preconfig Paolo Bonzini
2020-11-20 16:28   ` Igor Mammedov
2020-11-20 16:45     ` Paolo Bonzini
2020-11-02 15:57 ` [RFC PATCH v2 00/37] cleanup qemu_init and make sense of command line processing Igor Mammedov
2020-11-02 16:34   ` Paolo Bonzini
2020-11-03 12:57     ` Igor Mammedov
2020-11-03 14:37       ` Paolo Bonzini
2020-11-20 16:19         ` Igor Mammedov
2020-11-20 16:27           ` Paolo Bonzini

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.