mbox series

[v3,00/36] cleanup qemu_init and make sense of command line processing

Message ID 20201123141435.2726558-1-pbonzini@redhat.com
Headers show
Series cleanup qemu_init and make sense of command line processing | expand

Message

Paolo Bonzini Nov. 23, 2020, 2:13 p.m. UTC
Incompatible changes WRT 5.x:

- "-incoming defer" will not generate a MIGRATION event until
  the migrate-incoming command is sent

- the "preconfig" runstate is not reported anymore, and is replaced
  with "prelaunch"

Since the patches build on a bunch of more mechanical changes to
remove the ram_size and bios_name global variables, which affect
all targets, I have already placed the result in the for-6.0 branch of
my gitlab repository.  The branch has also passed CI already.

Thanks,

Paolo

Paolo Bonzini (36):
  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
  qemu-option: restrict qemu_opts_set to merge-lists QemuOpts
  vl: create "-net nic -net user" default earlier
  vl: load plugins as late as possible
  vl: move semihosting command line fallback to qemu_init_board
  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
  vl: extract softmmu/datadir.c
  vl: extract machine done notifiers
  vl: extract softmmu/rtc.c
  vl: extract softmmu/runstate.c
  vl: extract softmmu/globals.c
  vl: remove serial_max_hds
  vl: clean up -boot variables
  vl: move all generic initialization out of vl.c

 hw/alpha/dp264.c              |    1 +
 hw/arm/boot.c                 |    1 +
 hw/arm/digic_boards.c         |    1 +
 hw/arm/highbank.c             |    1 +
 hw/arm/npcm7xx_boards.c       |    1 +
 hw/arm/sbsa-ref.c             |    1 +
 hw/arm/vexpress.c             |    1 +
 hw/arm/virt.c                 |    1 +
 hw/avr/boot.c                 |    1 +
 hw/core/loader.c              |    1 +
 hw/core/machine-qmp-cmds.c    |    5 +-
 hw/core/machine.c             |  103 ++
 hw/core/qdev.c                |   12 +-
 hw/display/cg3.c              |    1 +
 hw/display/tcx.c              |    1 +
 hw/hppa/machine.c             |    1 +
 hw/i386/x86.c                 |    1 +
 hw/lm32/milkymist.c           |    1 +
 hw/m68k/mcf5208.c             |    1 +
 hw/m68k/q800.c                |    1 +
 hw/microblaze/boot.c          |    1 +
 hw/mips/fuloong2e.c           |    1 +
 hw/mips/jazz.c                |    1 +
 hw/mips/malta.c               |    1 +
 hw/mips/mipssim.c             |    1 +
 hw/nios2/boot.c               |    1 +
 hw/nvram/fw_cfg.c             |    1 +
 hw/pci-host/prep.c            |    1 +
 hw/pci/pci.c                  |    1 +
 hw/ppc/e500.c                 |    1 +
 hw/ppc/mac_newworld.c         |    1 +
 hw/ppc/mac_oldworld.c         |    1 +
 hw/ppc/pnv.c                  |    1 +
 hw/ppc/ppc405_boards.c        |    1 +
 hw/ppc/ppc440_bamboo.c        |    1 +
 hw/ppc/sam460ex.c             |    1 +
 hw/ppc/spapr.c                |    7 +-
 hw/ppc/virtex_ml507.c         |    1 +
 hw/riscv/boot.c               |    1 +
 hw/s390x/ipl.c                |    1 +
 hw/sparc/leon3.c              |    1 +
 hw/sparc/sun4m.c              |    1 +
 hw/sparc64/sun4u.c            |    1 +
 include/exec/cpu-common.h     |    3 +
 include/exec/exec-all.h       |    3 -
 include/hw/boards.h           |    2 +
 include/hw/qdev-core.h        |    9 +-
 include/migration/misc.h      |    1 -
 include/qapi/qmp/dispatch.h   |    1 +
 include/qemu-common.h         |   21 -
 include/qemu/datadir.h        |   28 +
 include/qemu/option.h         |    3 +-
 include/sysemu/runstate.h     |    1 -
 include/sysemu/sysemu.h       |   12 +-
 migration/migration.c         |   37 +-
 monitor/hmp.c                 |   23 +-
 monitor/qmp-cmds.c            |   10 -
 qapi/qmp-dispatch.c           |    5 +-
 qapi/run-state.json           |    5 +-
 softmmu/datadir.c             |  129 ++
 softmmu/globals.c             |   74 +
 softmmu/meson.build           |    4 +
 softmmu/qdev-monitor.c        |   18 +-
 softmmu/rtc.c                 |  190 +++
 softmmu/runstate.c            |  800 ++++++++++
 softmmu/vl.c                  | 2761 ++++++++++-----------------------
 stubs/meson.build             |    1 +
 stubs/qmp-command-available.c |    7 +
 tests/qtest/fuzz/fuzz.c       |    1 +
 tests/qtest/qmp-test.c        |    2 +-
 tests/test-qemu-opts.c        |   20 +-
 ui/keymaps.c                  |    1 +
 util/qemu-option.c            |    9 +-
 73 files changed, 2311 insertions(+), 2036 deletions(-)
 create mode 100644 include/qemu/datadir.h
 create mode 100644 softmmu/datadir.c
 create mode 100644 softmmu/globals.c
 create mode 100644 softmmu/rtc.c
 create mode 100644 softmmu/runstate.c
 create mode 100644 stubs/qmp-command-available.c

Comments

Igor Mammedov Nov. 30, 2020, 12:50 p.m. UTC | #1
On Mon, 23 Nov 2020 09:13:59 -0500
Paolo Bonzini <pbonzini@redhat.com> wrote:

> Incompatible changes WRT 5.x:
> 
> - "-incoming defer" will not generate a MIGRATION event until
>   the migrate-incoming command is sent
> 
> - the "preconfig" runstate is not reported anymore, and is replaced
>   with "prelaunch"

I completed reviewing this series (modulo 10/36) which I'm not confident
enough to review. I think Markus might be better fit for reviewing it.

> Since the patches build on a bunch of more mechanical changes to
> remove the ram_size and bios_name global variables, which affect
> all targets, I have already placed the result in the for-6.0 branch of
> my gitlab repository.  The branch has also passed CI already.
> 
> Thanks,
> 
> Paolo
> 
> Paolo Bonzini (36):
>   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
>   qemu-option: restrict qemu_opts_set to merge-lists QemuOpts
>   vl: create "-net nic -net user" default earlier
>   vl: load plugins as late as possible
>   vl: move semihosting command line fallback to qemu_init_board
>   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
>   vl: extract softmmu/datadir.c
>   vl: extract machine done notifiers
>   vl: extract softmmu/rtc.c
>   vl: extract softmmu/runstate.c
>   vl: extract softmmu/globals.c
>   vl: remove serial_max_hds
>   vl: clean up -boot variables
>   vl: move all generic initialization out of vl.c
> 
>  hw/alpha/dp264.c              |    1 +
>  hw/arm/boot.c                 |    1 +
>  hw/arm/digic_boards.c         |    1 +
>  hw/arm/highbank.c             |    1 +
>  hw/arm/npcm7xx_boards.c       |    1 +
>  hw/arm/sbsa-ref.c             |    1 +
>  hw/arm/vexpress.c             |    1 +
>  hw/arm/virt.c                 |    1 +
>  hw/avr/boot.c                 |    1 +
>  hw/core/loader.c              |    1 +
>  hw/core/machine-qmp-cmds.c    |    5 +-
>  hw/core/machine.c             |  103 ++
>  hw/core/qdev.c                |   12 +-
>  hw/display/cg3.c              |    1 +
>  hw/display/tcx.c              |    1 +
>  hw/hppa/machine.c             |    1 +
>  hw/i386/x86.c                 |    1 +
>  hw/lm32/milkymist.c           |    1 +
>  hw/m68k/mcf5208.c             |    1 +
>  hw/m68k/q800.c                |    1 +
>  hw/microblaze/boot.c          |    1 +
>  hw/mips/fuloong2e.c           |    1 +
>  hw/mips/jazz.c                |    1 +
>  hw/mips/malta.c               |    1 +
>  hw/mips/mipssim.c             |    1 +
>  hw/nios2/boot.c               |    1 +
>  hw/nvram/fw_cfg.c             |    1 +
>  hw/pci-host/prep.c            |    1 +
>  hw/pci/pci.c                  |    1 +
>  hw/ppc/e500.c                 |    1 +
>  hw/ppc/mac_newworld.c         |    1 +
>  hw/ppc/mac_oldworld.c         |    1 +
>  hw/ppc/pnv.c                  |    1 +
>  hw/ppc/ppc405_boards.c        |    1 +
>  hw/ppc/ppc440_bamboo.c        |    1 +
>  hw/ppc/sam460ex.c             |    1 +
>  hw/ppc/spapr.c                |    7 +-
>  hw/ppc/virtex_ml507.c         |    1 +
>  hw/riscv/boot.c               |    1 +
>  hw/s390x/ipl.c                |    1 +
>  hw/sparc/leon3.c              |    1 +
>  hw/sparc/sun4m.c              |    1 +
>  hw/sparc64/sun4u.c            |    1 +
>  include/exec/cpu-common.h     |    3 +
>  include/exec/exec-all.h       |    3 -
>  include/hw/boards.h           |    2 +
>  include/hw/qdev-core.h        |    9 +-
>  include/migration/misc.h      |    1 -
>  include/qapi/qmp/dispatch.h   |    1 +
>  include/qemu-common.h         |   21 -
>  include/qemu/datadir.h        |   28 +
>  include/qemu/option.h         |    3 +-
>  include/sysemu/runstate.h     |    1 -
>  include/sysemu/sysemu.h       |   12 +-
>  migration/migration.c         |   37 +-
>  monitor/hmp.c                 |   23 +-
>  monitor/qmp-cmds.c            |   10 -
>  qapi/qmp-dispatch.c           |    5 +-
>  qapi/run-state.json           |    5 +-
>  softmmu/datadir.c             |  129 ++
>  softmmu/globals.c             |   74 +
>  softmmu/meson.build           |    4 +
>  softmmu/qdev-monitor.c        |   18 +-
>  softmmu/rtc.c                 |  190 +++
>  softmmu/runstate.c            |  800 ++++++++++
>  softmmu/vl.c                  | 2761 ++++++++++-----------------------
>  stubs/meson.build             |    1 +
>  stubs/qmp-command-available.c |    7 +
>  tests/qtest/fuzz/fuzz.c       |    1 +
>  tests/qtest/qmp-test.c        |    2 +-
>  tests/test-qemu-opts.c        |   20 +-
>  ui/keymaps.c                  |    1 +
>  util/qemu-option.c            |    9 +-
>  73 files changed, 2311 insertions(+), 2036 deletions(-)
>  create mode 100644 include/qemu/datadir.h
>  create mode 100644 softmmu/datadir.c
>  create mode 100644 softmmu/globals.c
>  create mode 100644 softmmu/rtc.c
>  create mode 100644 softmmu/runstate.c
>  create mode 100644 stubs/qmp-command-available.c
>