Patchwork [2/4] Make -machine/-enable-kvm options merge into a single list

login
register
mail settings
Submitter Peter Maydell
Date Feb. 8, 2012, 5:41 a.m.
Message ID <1328679700-31015-3-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/140065/
State New
Headers show

Comments

Peter Maydell - Feb. 8, 2012, 5:41 a.m.
Make the "machine" option list use list merging, so that multiple
-machine arguments (and the -enable-kvm argument) all merge together
into a single list. Drop the calls to qemu_opts_reset() which meant
that only the last -machine or -enable-kvm option had any effect.

This fixes the bug where "-enable-kvm -machine foo" would ignore
the '-enable-kvm' option, and "-machine foo -enable-kvm" would
ignore the '-machine foo' option.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 qemu-config.c |    1 +
 vl.c          |    2 --
 2 files changed, 1 insertions(+), 2 deletions(-)
andrzej zaborowski - Feb. 17, 2012, 8:11 a.m.
On 8 February 2012 06:41, Peter Maydell <peter.maydell@linaro.org> wrote:
> Make the "machine" option list use list merging, so that multiple
> -machine arguments (and the -enable-kvm argument) all merge together
> into a single list. Drop the calls to qemu_opts_reset() which meant
> that only the last -machine or -enable-kvm option had any effect.
>
> This fixes the bug where "-enable-kvm -machine foo" would ignore
> the '-enable-kvm' option, and "-machine foo -enable-kvm" would
> ignore the '-machine foo' option.

Applied this patch and the first one as a bug fix, thank you.

Cheers

Patch

diff --git a/qemu-config.c b/qemu-config.c
index b030205..c938470 100644
--- a/qemu-config.c
+++ b/qemu-config.c
@@ -521,6 +521,7 @@  QemuOptsList qemu_option_rom_opts = {
 static QemuOptsList qemu_machine_opts = {
     .name = "machine",
     .implied_opt_name = "type",
+    .merge_lists = true,
     .head = QTAILQ_HEAD_INITIALIZER(qemu_machine_opts.head),
     .desc = {
         {
diff --git a/vl.c b/vl.c
index 63dd725..fe24ef8 100644
--- a/vl.c
+++ b/vl.c
@@ -2874,12 +2874,10 @@  int main(int argc, char **argv, char **envp)
                 break;
             case QEMU_OPTION_enable_kvm:
                 olist = qemu_find_opts("machine");
-                qemu_opts_reset(olist);
                 qemu_opts_parse(olist, "accel=kvm", 0);
                 break;
             case QEMU_OPTION_machine:
                 olist = qemu_find_opts("machine");
-                qemu_opts_reset(olist);
                 opts = qemu_opts_parse(olist, optarg, 1);
                 if (!opts) {
                     fprintf(stderr, "parse error: %s\n", optarg);