These patches are meant to back the memo "Redesign of QEMU startup & initial configuration" I just posted. Read that first, please.
My running example for initial configuration via QMP is cold plug. It works at the end of the series. I'm taking a number of shortcuts: * I hack up qemu-system-FOO instead of creating an alternate program. Just so I don't have to mess with Meson. * Instead of creating QAPI/CLI infrastructure, I use QMP as CLI: each argument is interpreted as QMP command. This is certainly bad CLI, but should suffice to demonstrate things. * Instead of feeding the CLI's QMP commands to the main loop via a quasi-monitor, I send them directly to the QMP dispatcher. Simpler, but I'm not sure that's going to work for all QMP commands we want. * Phase advance is by explicit command @until-phase only. Carelessly named. We may want some other commands to advance the phase automatically. * There are no safeguards. You *can* run QMP commands in phases where they crash. Data corruption is left as an exercise for the reader. * Possibly more I can't remember right now :) Markus Armbruster (11): vl: Cut off the CLI with an axe vl: Drop x-exit-preconfig vl: Hardcode a QMP monitor on stdio for now vl: Hardcode a VGA device for now vl: Demonstrate (bad) CLI wrapped around QMP vl: Factor qemu_until_phase() out of qemu_init() vl: Implement qemu_until_phase() running from arbitrary phase vl: Implement qemu_until_phase() running to arbitrary phase vl: New QMP command until-phase vl: Disregard lack of 'allow-preconfig': true vl: Enter main loop in phase @machine-initialized qapi/misc.json | 27 - qapi/phase.json | 31 + qapi/qapi-schema.json | 1 + include/hw/qdev-core.h | 31 - hw/core/machine-qmp-cmds.c | 1 + hw/core/machine.c | 1 + hw/core/qdev.c | 7 + hw/pci/pci.c | 1 + hw/usb/core.c | 1 + hw/virtio/virtio-iommu.c | 1 + monitor/hmp-cmds.c | 8 - monitor/hmp.c | 1 + softmmu/qdev-monitor.c | 3 + softmmu/vl.c | 2833 ++---------------------------------- ui/console.c | 1 + MAINTAINERS | 1 + hmp-commands.hx | 18 - qapi/meson.build | 1 + 18 files changed, 180 insertions(+), 2788 deletions(-) create mode 100644 qapi/phase.json -- 2.31.1