aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Jones <drjones@redhat.com>2016-06-21 18:34:04 +0200
committerPaolo Bonzini <pbonzini@redhat.com>2016-06-29 14:03:48 +0200
commit66f37d360b3fc91275ab6ca3de81f0d356c24b4a (patch)
tree3bb194b886e96f0f256337ca8d8d0c218c68e0dc
parent8f242cb724cad4a3996e4634e55b7c03ed508a69 (diff)
vl: smp_parse: fix regression
Commit 0544edd88a "vl: smp_parse: cleanups" regressed any -smp config that left either cores or threads unspecified, and specified a topology supporting more cpus than the given online cpus. The correct way to calculate the missing parameter would be to use maxcpus, but it's too late to change that now. Restore the old way, which is to calculate it with the online cpus (as is still done), but then, if the result is zero, just set it to one. Signed-off-by: Andrew Jones <drjones@redhat.com> Message-Id: <1466526844-29245-1-git-send-email-drjones@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-rw-r--r--vl.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/vl.c b/vl.c
index 64cfa968c9..0367647204 100644
--- a/vl.c
+++ b/vl.c
@@ -1234,8 +1234,10 @@ static void smp_parse(QemuOpts *opts)
} else if (cores == 0) {
threads = threads > 0 ? threads : 1;
cores = cpus / (sockets * threads);
+ cores = cores > 0 ? cores : 1;
} else if (threads == 0) {
threads = cpus / (cores * sockets);
+ threads = threads > 0 ? threads : 1;
} else if (sockets * cores * threads < cpus) {
error_report("cpu topology: "
"sockets (%u) * cores (%u) * threads (%u) < "