Skip to content

Commit

Permalink
vl: Don't silently change topology when all -smp options were set
Browse files Browse the repository at this point in the history
QEMU tries to change the "threads" option even if it was explicitly set
in the command-line, and it shouldn't do that.

The right thing to do when all options (cpus, sockets, cores, threds)
are explicitly set is to sanity check them and abort in case they don't
make sense (i.e. when sockets*cores*threads < cpus).

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Andrew Jones <drjones@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
  • Loading branch information
ehabkost authored and bonzini committed Jan 9, 2015
1 parent c00cd99 commit ec2cbbd
Showing 1 changed file with 7 additions and 1 deletion.
8 changes: 7 additions & 1 deletion vl.c
Expand Up @@ -1173,8 +1173,14 @@ static void smp_parse(QemuOpts *opts)
} else if (cores == 0) {
threads = threads > 0 ? threads : 1;
cores = cpus / (sockets * threads);
} else {
} else if (threads == 0) {
threads = cpus / (cores * sockets);
} else if (sockets * cores * threads < cpus) {
fprintf(stderr, "cpu topology: error: "
"sockets (%u) * cores (%u) * threads (%u) < "
"smp_cpus (%u)\n",
sockets, cores, threads, cpus);
exit(1);
}

max_cpus = qemu_opt_get_number(opts, "maxcpus", 0);
Expand Down

0 comments on commit ec2cbbd

Please sign in to comment.