On 2/24/21 7:52 AM, Kevin Wolf wrote: > This switches the system emulator from a QemuOpts-based parser for > -object to user_creatable_parse_str() which uses a keyval parser and > enforces the QAPI schema. > > Apart from being a cleanup, this makes non-scalar properties accessible. > > This adopts a similar model as -blockdev uses: When parsing the option, > create the ObjectOptions and queue them. At the later point where we > used to create objects for the collected QemuOpts, the ObjectOptions > queue is processed instead. > > A complication compared to -blockdev is that object definitions are > supported in -readconfig and -writeconfig. > > After this patch, -readconfig still works, though it still goes through > the QemuOpts parser, which means that improvements like non-scalar > properties are still not available in config files. > > -writeconfig stops working for -object. Tough luck. It has never > supported all options (not even the common ones), so supporting one less > isn't the end of the world. As object definitions from -readconfig still > go through QemuOpts, they are still included in -writeconfig output, > which at least prevents destroying your existing configuration when you > just wanted to add another option. And Paolo has submitted a patch deprecating it. > > Signed-off-by: Kevin Wolf <kwolf@xxxxxxxxxx> > --- > softmmu/vl.c | 109 +++++++++++++++++++++++++++++++++++++++------------ > 1 file changed, 84 insertions(+), 25 deletions(-) > Reviewed-by: Eric Blake <eblake@xxxxxxxxxx> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3226 Virtualization: qemu.org | libvirt.org