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>
This commit is contained in:
Paolo Bonzini 2019-11-13 12:37:00 +01:00
parent 53b62bec01
commit 7f8b6126e7
1 changed files with 11 additions and 7 deletions

18
vl.c
View File

@ -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()) {