When using JSON syntax for -device, -set option can not find device
specified in JSON by id field. The following commandline is an example:

$ qemu-system-x86_64 -device '{"id":"foo"}' -set device.foo.bar=1
qemu-system-x86_64: -set device.foo.bar=1: there is no device "foo" defined

The patch adds device opts to device opts list when a device opts get
parsed.

Signed-off-by: MkfsSion <mkfss...@mkfssion.com>
---
 softmmu/vl.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/softmmu/vl.c b/softmmu/vl.c
index 620a1f1367..0dd5acbc1a 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3400,6 +3400,8 @@ void qemu_init(int argc, char **argv, char **envp)
                     loc_save(&opt->loc);
                     assert(opt->opts != NULL);
                     QTAILQ_INSERT_TAIL(&device_opts, opt, next);
+                    qemu_opts_from_qdict(qemu_find_opts_err("device", 
&error_fatal),
+                                         opt->opts, &error_fatal);
                 } else {
                     if (!qemu_opts_parse_noisily(qemu_find_opts("device"),
                                                  optarg, true)) {
-- 
2.34.1


Reply via email to