[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/2] system/vl.c: do not allow mixed -accel opts
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH 1/2] system/vl.c: do not allow mixed -accel opts |
Date: |
Mon, 1 Jul 2024 10:30:37 -0300 |
We're allowing multiple -accel options to be used with different
accelerators, even though we don't have any machine that supports mixed
acceleration.
In fact, it will only parse the first occurence of -accel and, aside
from a help option (e.g. -accel help) that will always cause the process
to print the help text, it will accept every other accel option
regardless of being correct or not. E.g. this:
qemu-system-x86_64 -accel kvm -accel tcg -accel IamNotAnAccel (...)
will happily boot a x86_64 KVM guest.
Do not allow for different accelerators to be used when multiple
instances of -accel are present.
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Thomas Huth <thuth@redhat.com>
Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>
---
system/vl.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/system/vl.c b/system/vl.c
index bdd2f6ecf6..32602e68b7 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -3318,10 +3318,22 @@ void qemu_init(int argc, char **argv)
}
break;
}
- case QEMU_OPTION_accel:
+ case QEMU_OPTION_accel: {
+ QemuOptsList *list = qemu_find_opts("accel");
+ const char *prev_accel = qemu_opt_get(QTAILQ_LAST(&list->head),
+ "accel");
+
accel_opts = qemu_opts_parse_noisily(qemu_find_opts("accel"),
optarg, true);
optarg = qemu_opt_get(accel_opts, "accel");
+
+ if (prev_accel && optarg && strcmp(prev_accel, optarg)) {
+ printf("Unable to mix accelerators with multiple "
+ "-accel options (have: '%s' and '%s')\n",
+ prev_accel, optarg);
+ exit(1);
+ }
+
if (!optarg || is_help_option(optarg)) {
printf("Accelerators supported in QEMU binary:\n");
GSList *el, *accel_list = object_class_get_list(TYPE_ACCEL,
@@ -3343,6 +3355,7 @@ void qemu_init(int argc, char **argv)
exit(0);
}
break;
+ }
case QEMU_OPTION_usb:
qdict_put_str(machine_opts_dict, "usb", "on");
break;
--
2.45.2
Re: [PATCH 0/2] system/vl.c: parse all '-accel' opts, Paolo Bonzini, 2024/07/01