aboutsummaryrefslogtreecommitdiff
path: root/vl.c
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2019-11-13 12:37:00 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2019-12-17 19:32:25 +0100
commit7f8b6126e7d4417a7faa8fdd18d5870d937aadf8 (patch)
tree99b030a91f96b7b67c7dfcaaca09347417a191e1 /vl.c
parent53b62bec0144615a54c77f4fc5561501a6a2c844 (diff)
vl: move icount configuration earlier
Once qemu_tcg_configure is turned into a QOM property setter, it will not be able to set a default value for mttcg_enabled. Setting the default will move to the TCG instance_init function, which currently runs before "-icount" is processed. However, it is harmless to do configure_icount for all accelerators; we will just fail later if a non-TCG accelerator is selected. So do that. Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'vl.c')
-rw-r--r--vl.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/vl.c b/vl.c
index 94508300c3..6e58c1d08d 100644
--- a/vl.c
+++ b/vl.c
@@ -2700,6 +2700,12 @@ static void user_register_global_props(void)
global_init_func, NULL, NULL);
}
+static int do_configure_icount(void *opaque, QemuOpts *opts, Error **errp)
+{
+ configure_icount(opts, errp);
+ return 0;
+}
+
int main(int argc, char **argv, char **envp)
{
int i;
@@ -4010,6 +4016,8 @@ int main(int argc, char **argv, char **envp)
* Note: uses machine properties such as kernel-irqchip, must run
* after machine_set_property().
*/
+ qemu_opts_foreach(qemu_find_opts("icount"),
+ do_configure_icount, NULL, &error_fatal);
configure_accelerator(current_machine, argv[0]);
/*
@@ -4095,13 +4103,9 @@ int main(int argc, char **argv, char **envp)
qemu_spice_init();
cpu_ticks_init();
- if (icount_opts) {
- if (!tcg_enabled()) {
- error_report("-icount is not allowed with hardware virtualization");
- exit(1);
- }
- configure_icount(icount_opts, &error_abort);
- qemu_opts_del(icount_opts);
+ if (use_icount && !(tcg_enabled() || qtest_enabled())) {
+ error_report("-icount is not allowed with hardware virtualization");
+ exit(1);
}
if (tcg_enabled()) {