CI: https://gitlab.com/peterx/qemu/-/pipelines/2560168907
This series introduces a generic way to specify migration parameters that can be used even during the early boot phase of QEMU. One example use case that already existed is CPR-transfer / CPR-exec. currently QEMU has a temporary global variable (incoming_mode) to achieve this, but it's hard to understand and this hack bleeded into quite a few places that we could have avoided. The lines in patch 2 touched may provide some idea. With a generic approach of setting migration parameters with cmdlines, we can remove this hack meanwhile QEMU should be able to keep the CPR behavior as before. To CPR maintainers and reviewers: please have a closer look, even better if it can be smoke tested, to see if this works for Oracle's environment, TIA. The 1st patch implemented that new semantics. It is straightforward: now we can setup any migration parameter using an extra line of: -incoming config:key1=value1,key2=value2,... So far only one such instance is allowed for simplicity, but it should be enough. We still allow multiple -incoming for specifying channels, used together with one "-incoming config:*". Then parameters set this way will be visible almost anytime for QEMU, for example, during initialization of device backends (which is before migration object created). I posted this series majorly because I want to see if this will make a possible new user for the new "local" migration parameter proposed in Vladimir's series: https://lore.kernel.org/r/[email protected] Especially, there're some context on this idea too in this email: https://lore.kernel.org/all/[email protected]/ With this series, we should be able to drop "incoming-fds" TAP property from the other series, instead relying on the existing "local" parameters both in migration core and in TAP's property should suffice. One thing to mention is I didn't further make only-migratable into a migration parameter. Logically it will also work now with only-migratable, but it then also means I'll need to convert it to a parameter, which will be mutable even after VM started. It will change how only-migratable used to work, hence I skipped. After this, we also almost have no reason to use -global for migration parameters. Capabilities are still not supported in -incoming cmdline, though. Thanks, Peter Xu (2): migration/vl: Allow set parameters with -incoming config:* migration/cpr: Opt-in "mode" parameter for early boot access include/migration/cpr.h | 3 -- include/migration/misc.h | 5 +++ migration/migration.h | 3 ++ migration/cpr.c | 18 ++++---- migration/migration.c | 91 +++++++++++++++++++++++++++++++++++++++- migration/options.c | 10 ++--- system/vl.c | 7 ++++ qemu-options.hx | 18 +++++++- 8 files changed, 133 insertions(+), 22 deletions(-) -- 2.53.0
