diff mbox

vl: smp_parse: fix regression

Message ID 1466526844-29245-1-git-send-email-drjones@redhat.com
State New
Headers show

Commit Message

Andrew Jones June 21, 2016, 4:34 p.m. UTC
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>
---
 vl.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Paolo Bonzini June 21, 2016, 4:56 p.m. UTC | #1
On 21/06/2016 18:34, Andrew Jones wrote:
> 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>
> ---
>  vl.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/vl.c b/vl.c
> index c85833a63c28e..b2137ca87078d 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) < "
> 

Queued, thanks.

Paolo
diff mbox

Patch

diff --git a/vl.c b/vl.c
index c85833a63c28e..b2137ca87078d 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) < "