From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: berrange@redhat.com, armbru@redhat.com
Subject: [PATCH 00/11] vl: compound properties for machines
Date: Thu, 10 Jun 2021 15:35:27 +0200 [thread overview]
Message-ID: <20210610133538.608390-1-pbonzini@redhat.com> (raw)
This series converts -M to keyval parsing, so that they can use
compound properties. The series also converts -smp to a
compound property.
This is also a preparatory work for SGX support, which would like to use
an array-type machine property.
Patches 1-3 introduce the infrastructure and the new functions that
will be used for "-M help" and to use keyval with "merge_lists = true"
semantics.
Patch 4 does the actual switch of -M to keyval and patch 5 removes now
dead code from qemu-option
Patches 6-11 finally validate the concept by implementing -smp as a
compound property; that is "-smp X=Y" is converted to "-machine smp.X=Y"
automatically. Really the only interesting patches are 9 and 11,
while the others are just cleanups.
The series does not support JSON syntax for -M because we need
to consider what happens if string-based dictionaries (produced by -M
key=val) have to be merged with strongly-typed dictionaries (produced
by -M {'key': 123}).
The plan is to only allow exactly one -M option when JSON syntax is in
use; the problem is that this is a forwards-compatibility landmine.
As soon as -smp is converted, for example, -smp becomes a shortcut for -M
and it is now forbidden to use -M '{....}' together with -smp. It would
be impossible to know which options in the future will become incompatible
with -M JSON syntax. Therefore, support for JSON syntax is delayed
until after the main options are converted to QOM compound properties.
These could be -boot, -acpitable, -smbios, -m, -semihosting-config,
-rtc and -fw_cfg.
Paolo
Paolo Bonzini (11):
qom: export more functions for use with non-UserCreatable objects
keyval: introduce keyval_merge
keyval: introduce keyval_parse_into
vl: switch -M parsing to keyval
qemu-option: remove now-dead code
machine: move dies from X86MachineState to CpuTopology
machine: move common smp_parse code to caller
machine: add error propagation to mc->smp_parse
machine: pass QAPI struct to mc->smp_parse
machine: reject -smp dies!=1 for non-PC machines
machine: add smp compound property
hw/core/machine.c | 184 +++++++++++---------
hw/i386/pc.c | 108 ++++++------
hw/i386/x86.c | 15 +-
include/hw/boards.h | 4 +-
include/hw/i386/pc.h | 3 -
include/hw/i386/x86.h | 1 -
include/qemu/option.h | 6 +-
include/qom/object.h | 23 +++
qapi/machine.json | 27 +++
qom/object_interfaces.c | 58 +++++--
softmmu/vl.c | 336 ++++++++++++++++++------------------
tests/qtest/numa-test.c | 22 +--
tests/unit/test-keyval.c | 56 ++++++
tests/unit/test-qemu-opts.c | 35 ----
util/keyval.c | 90 +++++++++-
util/qemu-option.c | 51 ++----
16 files changed, 584 insertions(+), 435 deletions(-)
--
2.31.1
next reply other threads:[~2021-06-10 13:37 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-06-10 13:35 Paolo Bonzini [this message]
2021-06-10 13:35 ` [PATCH 01/11] qom: export more functions for use with non-UserCreatable objects Paolo Bonzini
2021-06-10 13:49 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 02/11] keyval: introduce keyval_merge Paolo Bonzini
2021-06-16 8:38 ` Markus Armbruster
2021-06-16 10:49 ` Paolo Bonzini
2021-06-10 13:35 ` [PATCH 03/11] keyval: introduce keyval_parse_into Paolo Bonzini
2021-06-10 13:53 ` Daniel P. Berrangé
2021-06-16 14:09 ` Markus Armbruster
2021-06-16 18:05 ` Paolo Bonzini
2021-06-10 13:35 ` [PATCH 04/11] vl: switch -M parsing to keyval Paolo Bonzini
2021-06-10 13:35 ` [PATCH 05/11] qemu-option: remove now-dead code Paolo Bonzini
2021-06-10 13:54 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 06/11] machine: move dies from X86MachineState to CpuTopology Paolo Bonzini
2021-06-10 13:55 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 07/11] machine: move common smp_parse code to caller Paolo Bonzini
2021-06-10 14:34 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 08/11] machine: add error propagation to mc->smp_parse Paolo Bonzini
2021-06-10 14:35 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 09/11] machine: pass QAPI struct " Paolo Bonzini
2021-06-10 14:37 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 10/11] machine: reject -smp dies!=1 for non-PC machines Paolo Bonzini
2021-06-10 14:37 ` Daniel P. Berrangé
2021-06-10 13:35 ` [PATCH 11/11] machine: add smp compound property Paolo Bonzini
2021-06-10 14:41 ` Daniel P. Berrangé
2021-06-14 22:57 ` [PATCH 00/11] vl: compound properties for machines no-reply
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=20210610133538.608390-1-pbonzini@redhat.com \
--to=pbonzini@redhat.com \
--cc=armbru@redhat.com \
--cc=berrange@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 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).