Make -machine/-enable-kvm options merge into a single list

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>
Signed-off-by: Andrzej Zaborowski <andrew.zaborowski@intel.com>
This commit is contained in:
Peter Maydell 2012-02-08 05:41:38 +00:00 committed by Andrzej Zaborowski
parent da93318a9f
commit 9de36b1a7c
2 changed files with 1 additions and 2 deletions

View File

@ -547,6 +547,7 @@ QemuOptsList qemu_option_rom_opts = {
static QemuOptsList qemu_machine_opts = { static QemuOptsList qemu_machine_opts = {
.name = "machine", .name = "machine",
.implied_opt_name = "type", .implied_opt_name = "type",
.merge_lists = true,
.head = QTAILQ_HEAD_INITIALIZER(qemu_machine_opts.head), .head = QTAILQ_HEAD_INITIALIZER(qemu_machine_opts.head),
.desc = { .desc = {
{ {

2
vl.c
View File

@ -2882,12 +2882,10 @@ int main(int argc, char **argv, char **envp)
break; break;
case QEMU_OPTION_enable_kvm: case QEMU_OPTION_enable_kvm:
olist = qemu_find_opts("machine"); olist = qemu_find_opts("machine");
qemu_opts_reset(olist);
qemu_opts_parse(olist, "accel=kvm", 0); qemu_opts_parse(olist, "accel=kvm", 0);
break; break;
case QEMU_OPTION_machine: case QEMU_OPTION_machine:
olist = qemu_find_opts("machine"); olist = qemu_find_opts("machine");
qemu_opts_reset(olist);
opts = qemu_opts_parse(olist, optarg, 1); opts = qemu_opts_parse(olist, optarg, 1);
if (!opts) { if (!opts) {
fprintf(stderr, "parse error: %s\n", optarg); fprintf(stderr, "parse error: %s\n", optarg);