[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 10/31] vl: allow full-blown QemuOpts syntax for
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 10/31] vl: allow full-blown QemuOpts syntax for -global |
Date: |
Tue, 19 May 2015 13:49:58 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.5.0 |
Markus, can you review this one?
Thanks,
Paolo
On 11/05/2015 15:48, Paolo Bonzini wrote:
> -global does not work for drivers that have a dot in their name, such as
> cfi.pflash01. This is just a parsing limitation, because such globals
> can be declared easily inside a -readconfig file.
>
> To allow this usage, support the full QemuOpts key/value syntax for -global
> too, for example "-global driver=cfi.pflash01,property=secure,value=on".
> The two formats do not conflict, because the key/value syntax does not have
> a period before the first equal sign.
>
> Signed-off-by: Paolo Bonzini <address@hidden>
> ---
> qdev-monitor.c | 18 +++++++++++-------
> qemu-options.hx | 7 ++++++-
> 2 files changed, 17 insertions(+), 8 deletions(-)
>
> diff --git a/qdev-monitor.c b/qdev-monitor.c
> index 1d87f57..9f17c81 100644
> --- a/qdev-monitor.c
> +++ b/qdev-monitor.c
> @@ -822,15 +822,19 @@ int qemu_global_option(const char *str)
> QemuOpts *opts;
> int rc, offset;
>
> - rc = sscanf(str, "%63[^.].%63[^=]%n", driver, property, &offset);
> - if (rc < 2 || str[offset] != '=') {
> - error_report("can't parse: \"%s\"", str);
> + rc = sscanf(str, "%63[^.=].%63[^=]%n", driver, property, &offset);
> + if (rc == 2 && str[offset] == '=') {
> + opts = qemu_opts_create(&qemu_global_opts, NULL, 0, &error_abort);
> + qemu_opt_set(opts, "driver", driver, &error_abort);
> + qemu_opt_set(opts, "property", property, &error_abort);
> + qemu_opt_set(opts, "value", str + offset + 1, &error_abort);
> + return 0;
> + }
> +
> + opts = qemu_opts_parse(&qemu_global_opts, str, false);
> + if (!opts) {
> return -1;
> }
>
> - opts = qemu_opts_create(&qemu_global_opts, NULL, 0, &error_abort);
> - qemu_opt_set(opts, "driver", driver, &error_abort);
> - qemu_opt_set(opts, "property", property, &error_abort);
> - qemu_opt_set(opts, "value", str + offset + 1, &error_abort);
> return 0;
> }
> diff --git a/qemu-options.hx b/qemu-options.hx
> index ec356f6..43c9ee0 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -171,11 +171,13 @@ Set parameter @var{arg} for item @var{id} of type
> @var{group}\n"
> ETEXI
>
> DEF("global", HAS_ARG, QEMU_OPTION_global,
> - "-global driver.prop=value\n"
> + "-global driver.property=value\n"
> + "-global driver=driver,property=property,value=value\n"
> " set a global default for a driver property\n",
> QEMU_ARCH_ALL)
> STEXI
> @item -global @address@hidden@var{value}
> address@hidden -global address@hidden,address@hidden,address@hidden
> @findex -global
> Set default value of @var{driver}'s property @var{prop} to @var{value}, e.g.:
>
> @@ -186,6 +188,9 @@ qemu-system-i386 -global
> ide-drive.physical_block_size=4096 -drive file=file,if=
> In particular, you can use this to set driver properties for devices which
> are
> created automatically by the machine model. To create a device which is not
> created automatically and set properties on it, use address@hidden
> +
> +The two syntaxes are equivalent. The longer one works for drivers whose name
> +contains a dot.
> ETEXI
>
> DEF("boot", HAS_ARG, QEMU_OPTION_boot,
>
- [Qemu-devel] [PATCH 00/31] target-i386: SMM improvements and partial support under KVM, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 01/31] pc: add 2.4 machine types, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 02/31] target-i386: introduce cpu_get_mem_attrs, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 05/31] target-i386: mask NMIs on entry to SMM, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 06/31] target-i386: set G=1 in SMM big real mode selectors, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 07/31] pflash_cfi01: change big-endian property to BIT type, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 04/31] target-i386: Use correct memory attributes for ioport accesses, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 08/31] pflash_cfi01: change to new-style MMIO accessors, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 03/31] target-i386: Use correct memory attributes for memory accesses, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 10/31] vl: allow full-blown QemuOpts syntax for -global, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 09/31] pflash_cfi01: add secure property, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 12/31] vl: run "late" notifiers immediately, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 13/31] target-i386: create a separate AddressSpace for each CPU, Paolo Bonzini, 2015/05/11
- [Qemu-devel] [PATCH 11/31] qom: add object_property_add_const_link, Paolo Bonzini, 2015/05/11