This series switches -object, -M and -accel from QemuOpts to keyval. Monitor commands device_add and netdev_add are also switched to keyval, though -device and -netdev for now are not.
Along the way, the syntax of keyval and QemuOpts becomes more consistent and support for keyval-based options is added to -readconfig. -writeconfig instead is removed (see patch 13 for rationale). The reason to do this is: - to make qemu-io, qemu-nbd, qemu-img and QEMU's parsing of -object consistent with qemu-storage-daemon's - to allow using compound properties in -object, -M and -accel Patch 1-3: make QemuOpts parsing a bit more restrictive, warning for short-form boolean options and removing weird ways to request help such as "help=foo" or "no?". Patch 4-10: let keyval accept escaped commas in implied options, switch comma-separated syntax for HMP from QemuOpts to keyval, add help support to object_add Patch 11-16: plumbing for reading keyval-based options in vl.c, including -set and -readconfig. The patches up to this point are the ones that I'd like to get a relatively fast review, since the remaining nine are more "boring". Patch 17-21: switch -object to keyval everywhere Patch 22-25: switch -M and -accel to keyval Based-on: <20210118162537.779542-1-pbonz...@redhat.com> Paolo Bonzini (25): qemu-option: clean up id vs. list->merge_lists qemu-option: move help handling to get_opt_name_value qemu-option: warn for short-form boolean options keyval: accept escaped commas in implied option keyval: simplify keyval_parse_one tests: convert check-qom-proplist to keyval keyval: introduce keyval_parse_into hmp: replace "O" parser with keyval qom: use qemu_printf to print help for user-creatable objects hmp: special case help options for object_add remove -writeconfig qemu-config: add error propagation to qemu_config_parse qemu-option: support accept-any QemuOptsList in qemu_opts_absorb_qdict qemu-config: parse configuration files to a QDict vl: plumb keyval-based options into -set and -readconfig qom: do not modify QDict argument in user_creatable_add_dict qemu-io: use keyval for -object parsing qemu-nbd: use keyval for -object parsing qemu-img: use keyval for -object parsing qemu: use keyval for -object parsing storage-daemon: do not register the "object" group with QemuOpts qom: export more functions for use with non-UserCreatable objects vl: switch -M parsing to keyval qemu-option: remove now-dead code vl: switch -accel parsing to keyval accel/accel.c | 6 + block/blkdebug.c | 3 +- docs/system/deprecated.rst | 6 + hmp-commands.hx | 6 +- include/block/qdict.h | 2 - include/qapi/qmp/qdict.h | 3 + include/qemu/config-file.h | 9 +- include/qemu/help_option.h | 11 - include/qemu/option.h | 6 +- include/qom/object.h | 21 + include/qom/object_interfaces.h | 68 +-- include/sysemu/accel.h | 1 + monitor/hmp-cmds.c | 22 +- monitor/hmp.c | 20 +- qemu-img.c | 258 +++------- qemu-io.c | 42 +- qemu-nbd.c | 42 +- qemu-options.hx | 13 +- qom/object_interfaces.c | 152 ++---- softmmu/vl.c | 673 ++++++++++++++------------- storage-daemon/qemu-storage-daemon.c | 10 - tests/check-qom-proplist.c | 58 ++- tests/test-keyval.c | 58 ++- tests/test-qemu-opts.c | 37 +- util/keyval.c | 231 +++++---- util/qemu-config.c | 141 +++--- util/qemu-option.c | 126 +++-- 27 files changed, 918 insertions(+), 1107 deletions(-) -- 2.26.2