qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Steve Sistare <steven.sistare@oracle.com>, qemu-devel@nongnu.org
Cc: Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>,
	David Hildenbrand <david@redhat.com>,
	Marcel Apfelbaum <marcel.apfelbaum@gmail.com>,
	Eduardo Habkost <eduardo@habkost.net>,
	Philippe Mathieu-Daude <philmd@linaro.org>,
	"Daniel P. Berrange" <berrange@redhat.com>,
	Markus Armbruster <armbru@redhat.com>
Subject: Re: [RFC V1 00/14] precreate phase
Date: Wed, 23 Oct 2024 18:31:39 +0200	[thread overview]
Message-ID: <b36283ff-2e14-4ee0-a64e-a5c4f9e86534@redhat.com> (raw)
In-Reply-To: <1729178055-207271-1-git-send-email-steven.sistare@oracle.com>

On 10/17/24 17:14, Steve Sistare wrote:
> Define a new qemu initialization phase called 'precreate' which occurs
> before most backends or devices have been created.  The only exception
> is monitor and qtest devices and their associated chardevs.
> 
> QEMU runs in the main loop during this phase.  Monitor connections are
> active and can receive migration configuration commands.  QEMU starts
> listening on the normal migration URI during this phase, which can come
> from either the QEMU command line or from a migrate_incoming command.
> Thus the user can issue query-migrate to get the socket-address for
> dynamically allocated port numbers during precreate.
> 
> In this series QEMU passes through and does not linger in the precreate
> phase, and the user sees no change in behavior.  The cpr-transfer series
> will linger in the phase for an incoming CPR operation, and exit the phase
> when the migrate command is send to source QEMU and causes destination QEMU
> to read CPR state.
> 
> A future series may wish to add a command-line argument and monitor
> command that enters and exits the precreate phase for general purpose use.
> That would enable the user to issue monitor commands that specify backend
> creation parameters.

I have a problem with the concept, which is that the split between 
command line and monitor is much harder to understand.

Ideally, one would come entirely before the other; preconfig is already 
ugly in how -device is processed later than everything else[1].  This 
series makes this much more complex.

If I understand correctly, what you want is effectively to execute 
monitor commands from the migration stream.  If you want to do that, we 
need to take more qemu_init code and turn it into QMP commands, so that 
precreate can exit qemu_init very early and the "after precreate" 
command line options can be replaced by interactions on the monitor.

This is the idea that drove the creation of -M smp.xxx, -M boot.xxx, -M 
memory.xxx, etc. (see for example commit 8c4da4b5218, "machine: add boot 
compound property", 2022-05-12).  For example -semihosting-config, 
-acpitable, -smbios, -fw_cfg, -option-rom, -rtc could all become -M 
properties and handled by a single monitor command machine-set.

Of all the other options, -accel, -cpu and -display are the main missing 
ones (-cpu is the very hard one); a full list is at 
https://wiki.qemu.org/User:Paolo_Bonzini/Machine_init_sequence#QMP_configuration_flow.

Anyhow, at this point all that's needed is a -chardev/-mon pair (and I 
guess -incoming defer) in order to bootstrap the monitor in precreate mode.

It's okay to prototype without full support for the options I've listed, 
but if we want to go with precreate we should make most command line 
options entirely incompatible with it, and also make it imply -nodefaults.

Paolo

[1] -loadvm and -incoming too; but for those two we could make their 
monitor commands exit preconfig mode automatically, and invoke them from 
the monitor instead of specifying them on the command line.



  parent reply	other threads:[~2024-10-23 16:32 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-10-17 15:14 [RFC V1 00/14] precreate phase Steve Sistare
2024-10-17 15:14 ` [RFC V1 01/14] accel: encapsulate search state Steve Sistare
2024-10-21 20:03   ` Fabiano Rosas
2024-10-17 15:14 ` [RFC V1 02/14] accel: accel preinit function Steve Sistare
2024-10-17 15:26   ` Steven Sistare
2024-10-21 14:54   ` Peter Xu
2024-10-23 16:13     ` Steven Sistare
2024-10-23 15:53   ` Paolo Bonzini
2024-10-23 16:25     ` Steven Sistare
2024-10-17 15:14 ` [RFC V1 03/14] accel: split configure_accelerators Steve Sistare
2024-10-17 15:14 ` [RFC V1 04/14] accel: set accelerator and machine props earlier Steve Sistare
2024-10-18 15:08   ` Fabiano Rosas
2024-10-18 15:32     ` Steven Sistare
2024-10-18 15:40       ` Steven Sistare
2024-10-18 19:15         ` Steven Sistare
2024-10-21 16:20           ` Peter Xu
2024-10-23 17:16             ` Paolo Bonzini
2024-10-22  8:30           ` David Hildenbrand
2024-10-23 20:28             ` Steven Sistare
2024-10-21 15:19   ` Peter Xu
2024-10-23 20:29     ` Steven Sistare
2024-10-23 16:00   ` Paolo Bonzini
2024-10-23 17:18     ` Paolo Bonzini
2024-10-23 20:29     ` Steven Sistare
2024-10-17 15:14 ` [RFC V1 05/14] migration: init and listen during precreate Steve Sistare
2024-10-21 16:41   ` Peter Xu
2024-10-21 21:05   ` Fabiano Rosas
2024-10-23 16:01     ` Steven Sistare
2024-10-17 15:14 ` [RFC V1 06/14] vl: precreate phase Steve Sistare
2024-10-23 14:03   ` Fabiano Rosas
2024-10-17 15:14 ` [RFC V1 07/14] monitor: chardev name Steve Sistare
2024-10-17 15:14 ` [RFC V1 08/14] qom: get properties Steve Sistare
2024-10-17 15:14 ` [RFC V1 09/14] qemu-option: filtered foreach Steve Sistare
2024-10-17 15:14 ` [RFC V1 10/14] qemu-options: pass object to filter Steve Sistare
2024-10-17 15:14 ` [RFC V1 11/14] monitor: connect in precreate Steve Sistare
2024-10-21 19:28   ` Peter Xu
2024-10-23 17:34     ` Steven Sistare
2024-10-23 16:05   ` Paolo Bonzini
2024-10-23 17:35     ` Steven Sistare
2024-10-17 15:14 ` [RFC V1 12/14] qtest: " Steve Sistare
2024-10-17 15:14 ` [RFC V1 13/14] net: cleanup for precreate phase Steve Sistare
2024-10-17 15:27   ` Steven Sistare
2024-10-21 19:20   ` Peter Xu
2024-10-23 17:43     ` Steven Sistare
2024-10-17 15:14 ` [RFC V1 14/14] migration: allow commands during precreate and preconfig Steve Sistare
2024-10-21 19:36   ` Peter Xu
2024-10-23 17:50     ` Steven Sistare
2024-10-17 15:19 ` [RFC V1 00/14] precreate phase Steven Sistare
2024-10-17 15:53   ` Peter Xu
2024-10-21 15:56     ` Steven Sistare
2024-10-23 16:31 ` Paolo Bonzini [this message]
2024-10-24 21:16   ` Steven Sistare
2024-10-25  8:46     ` Daniel P. Berrangé
2024-10-25 13:33       ` Steven Sistare
2024-10-25 13:43         ` Daniel P. Berrangé
2024-10-25 14:32           ` Steven Sistare
2024-10-25 14:49             ` Daniel P. Berrangé
2024-10-28 21:56           ` Peter Xu
2024-10-29  9:09             ` Daniel P. Berrangé
2024-10-29 11:13           ` Daniel P. Berrangé
2024-10-29 13:20             ` Fabiano Rosas
2024-10-29 15:18               ` Peter Xu
2024-10-29 15:58               ` Daniel P. Berrangé

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=b36283ff-2e14-4ee0-a64e-a5c4f9e86534@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=armbru@redhat.com \
    --cc=berrange@redhat.com \
    --cc=david@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=farosas@suse.de \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=peterx@redhat.com \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=steven.sistare@oracle.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).