mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-09-06 01:43:39 +00:00
accel: Improve selection of the default accelerator
When compiling with "--disable-tcg", we currently still use "tcg" as default accelerator. "kvm" should be used in this case instead. Also, some downstream distros provide QEMU binaries which have "kvm" in their names (e.g. "qemu-kvm" on RHEL or "kvm" on Ubuntu) that use KVM by default - and some users might want to do something similar with upstream binaries, too. Accomodate them by using "kvm:tcg" as default when we detect such a binary name. Signed-off-by: Thomas Huth <thuth@redhat.com> Message-Id: <1538748792-19444-1-git-send-email-thuth@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
a311f891ab
commit
98e56ae679
|
@ -69,7 +69,7 @@ static int accel_init_machine(AccelClass *acc, MachineState *ms)
|
|||
return ret;
|
||||
}
|
||||
|
||||
void configure_accelerator(MachineState *ms)
|
||||
void configure_accelerator(MachineState *ms, const char *progname)
|
||||
{
|
||||
const char *accel;
|
||||
char **accel_list, **tmp;
|
||||
|
@ -80,8 +80,20 @@ void configure_accelerator(MachineState *ms)
|
|||
|
||||
accel = qemu_opt_get(qemu_get_machine_opts(), "accel");
|
||||
if (accel == NULL) {
|
||||
/* Use the default "accelerator", tcg */
|
||||
accel = "tcg";
|
||||
/* Select the default accelerator */
|
||||
int pnlen = strlen(progname);
|
||||
if (pnlen >= 3 && g_str_equal(&progname[pnlen - 3], "kvm")) {
|
||||
/* If the program name ends with "kvm", we prefer KVM */
|
||||
accel = "kvm:tcg";
|
||||
} else {
|
||||
#if defined(CONFIG_TCG)
|
||||
accel = "tcg";
|
||||
#elif defined(CONFIG_KVM)
|
||||
accel = "kvm";
|
||||
#else
|
||||
#error "No default accelerator available"
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
accel_list = g_strsplit(accel, ":", 0);
|
||||
|
|
|
@ -66,7 +66,7 @@ typedef struct AccelClass {
|
|||
|
||||
extern unsigned long tcg_tb_size;
|
||||
|
||||
void configure_accelerator(MachineState *ms);
|
||||
void configure_accelerator(MachineState *ms, const char *progname);
|
||||
/* Called just before os_setup_post (ie just before drop OS privs) */
|
||||
void accel_setup_post(MachineState *ms);
|
||||
|
||||
|
|
2
vl.c
2
vl.c
|
@ -4329,7 +4329,7 @@ int main(int argc, char **argv, char **envp)
|
|||
qemu_opt_foreach(machine_opts, machine_set_property, current_machine,
|
||||
&error_fatal);
|
||||
|
||||
configure_accelerator(current_machine);
|
||||
configure_accelerator(current_machine, argv[0]);
|
||||
|
||||
if (!qtest_enabled() && machine_class->deprecation_reason) {
|
||||
error_report("Machine type '%s' is deprecated: %s",
|
||||
|
|
Loading…
Reference in a new issue