From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Cc: damien.hedde@greensocs.com, berrange@redhat.com,
mark.burton@greensocs.com, edgar.iglesias@gmail.co,
mirela.grujic@greensocs.com, marcandre.lureau@redhat.com,
pbonzini@redhat.com, jsnow@redhat.com
Subject: [PATCH RFC 00/11] vl: Explore redesign of startup
Date: Thu, 2 Dec 2021 08:04:39 +0100 [thread overview]
Message-ID: <20211202070450.264743-1-armbru@redhat.com> (raw)
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
next reply other threads:[~2021-12-02 7:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-02 7:04 Markus Armbruster [this message]
2021-12-02 7:04 ` [PATCH RFC 01/11] vl: Cut off the CLI with an axe Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 02/11] vl: Drop x-exit-preconfig Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 03/11] vl: Hardcode a QMP monitor on stdio for now Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 04/11] vl: Hardcode a VGA device " Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 05/11] vl: Demonstrate (bad) CLI wrapped around QMP Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 06/11] vl: Factor qemu_until_phase() out of qemu_init() Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 07/11] vl: Implement qemu_until_phase() running from arbitrary phase Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 08/11] vl: Implement qemu_until_phase() running to " Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 09/11] vl: New QMP command until-phase Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 10/11] vl: Disregard lack of 'allow-preconfig': true Markus Armbruster
2021-12-02 7:04 ` [PATCH RFC 11/11] vl: Enter main loop in phase @machine-initialized Markus Armbruster
2021-12-02 10:26 ` [PATCH RFC 00/11] vl: Explore redesign of startup Markus Armbruster
2021-12-07 16:52 ` Damien Hedde
2021-12-08 7:07 ` Markus Armbruster
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=20211202070450.264743-1-armbru@redhat.com \
--to=armbru@redhat.com \
--cc=berrange@redhat.com \
--cc=damien.hedde@greensocs.com \
--cc=edgar.iglesias@gmail.co \
--cc=jsnow@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=mark.burton@greensocs.com \
--cc=mirela.grujic@greensocs.com \
--cc=pbonzini@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.