diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2020-01-09 12:07:30 +1100 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2020-01-21 14:18:24 -1000 |
commit | 755ee1f301b30d2cd248e162e3a438473eed3767 (patch) | |
tree | ad3359671ec8341a020da5692016db6ece043099 /vl.c | |
parent | a024b0906779e4355b6d04f67c01d1bc0dcc2699 (diff) | |
download | qemu-755ee1f301b30d2cd248e162e3a438473eed3767.zip qemu-755ee1f301b30d2cd248e162e3a438473eed3767.tar.gz qemu-755ee1f301b30d2cd248e162e3a438473eed3767.tar.bz2 |
vl: Only choose enabled accelerators in configure_accelerators
By choosing "tcg:kvm" when kvm is not enabled, we generate
an incorrect warning: "invalid accelerator kvm".
At the same time, use g_str_has_suffix rather than open-coding
the same operation.
Presumably the inverse is also true with --disable-tcg.
Fixes: 28a0961757fc
Acked-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed by: Aleksandar Markovic <amarkovic@wavecomp.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'vl.c')
-rw-r--r-- | vl.c | 21 |
1 files changed, 13 insertions, 8 deletions
@@ -2766,21 +2766,26 @@ static void configure_accelerators(const char *progname) if (accel == NULL) { /* Select the default accelerator */ - if (!accel_find("tcg") && !accel_find("kvm")) { - error_report("No accelerator selected and" - " no default accelerator available"); - exit(1); - } else { - int pnlen = strlen(progname); - if (pnlen >= 3 && g_str_equal(&progname[pnlen - 3], "kvm")) { + bool have_tcg = accel_find("tcg"); + bool have_kvm = accel_find("kvm"); + + if (have_tcg && have_kvm) { + if (g_str_has_suffix(progname, "kvm")) { /* If the program name ends with "kvm", we prefer KVM */ accel = "kvm:tcg"; } else { accel = "tcg:kvm"; } + } else if (have_kvm) { + accel = "kvm"; + } else if (have_tcg) { + accel = "tcg"; + } else { + error_report("No accelerator selected and" + " no default accelerator available"); + exit(1); } } - accel_list = g_strsplit(accel, ":", 0); for (tmp = accel_list; *tmp; tmp++) { |