All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yanan Wang <wangyanan55@huawei.com>
To: <qemu-devel@nongnu.org>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
	"Andrew Jones" <drjones@redhat.com>,
	"Cornelia Huck" <cohuck@redhat.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"Pierre Morel" <pmorel@linux.ibm.com>,
	"Michael S . Tsirkin" <mst@redhat.com>,
	"Pankaj Gupta" <pankaj.gupta.linux@gmail.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Greg Kurz" <groug@kaod.org>, "Halil Pasic" <pasic@linux.ibm.com>,
	wanghaibin.wang@huawei.com, "Thomas Huth" <thuth@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"David Gibson" <david@gibson.dropbear.id.au>
Subject: [PATCH v6 02/16] machine: Deprecate "parameter=0" SMP configurations
Date: Thu, 19 Aug 2021 11:10:13 +0800	[thread overview]
Message-ID: <20210819031027.41104-3-wangyanan55@huawei.com> (raw)
In-Reply-To: <20210819031027.41104-1-wangyanan55@huawei.com>

In the SMP configuration, we should either provide a topology
parameter with a reasonable value (greater than zero) or just
omit it and QEMU will compute the missing value.

The users shouldn't provide a configuration with any parameter
of it specified as zero (e.g. -smp 8,sockets=0) which could
possibly cause unexpected results in the -smp parsing. So we
deprecate this kind of configurations since 6.2 by adding the
explicit sanity check.

Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
---
 docs/about/deprecated.rst | 15 +++++++++++++++
 hw/core/machine.c         | 14 ++++++++++++++
 qapi/machine.json         |  2 +-
 qemu-options.hx           | 12 +++++++-----
 4 files changed, 37 insertions(+), 6 deletions(-)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 6d438f1c8d..8dbb027dbb 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -138,6 +138,21 @@ an underscore between "window" and "close").
 The ``-no-quit`` is a synonym for ``-display ...,window-close=off`` which
 should be used instead.
 
+``-smp`` ("parameter=0" SMP configurations) (since 6.2)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+Specified CPU topology parameters must be greater than zero.
+
+In the SMP configuration, users should either provide a CPU topology
+parameter with a reasonable value (greater than zero) or just omit it
+and QEMU will compute the missing value.
+
+However, historically it was implicitly allowed for users to provide
+a parameter with zero value, which is meaningless and could also possibly
+cause unexpected results in the -smp parsing. So support for this kind of
+configurations (e.g. -smp 8,sockets=0) is deprecated since 6.2 and will
+be removed in the near future, users have to ensure that all the topology
+members described with -smp are greater than zero.
 
 QEMU Machine Protocol (QMP) commands
 ------------------------------------
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 54e040587d..3b5df9b002 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -832,6 +832,20 @@ static void machine_set_smp(Object *obj, Visitor *v, const char *name,
         return;
     }
 
+    /*
+     * Specified CPU topology parameters must be greater than zero,
+     * explicit configuration like "cpus=0" is not allowed.
+     */
+    if ((config->has_cpus && config->cpus == 0) ||
+        (config->has_sockets && config->sockets == 0) ||
+        (config->has_dies && config->dies == 0) ||
+        (config->has_cores && config->cores == 0) ||
+        (config->has_threads && config->threads == 0) ||
+        (config->has_maxcpus && config->maxcpus == 0)) {
+        warn_report("Invalid CPU topology deprecated: "
+                    "CPU topology parameters must be greater than zero");
+    }
+
     mc->smp_parse(ms, config, errp);
     if (*errp) {
         goto out_free;
diff --git a/qapi/machine.json b/qapi/machine.json
index 157712f006..10a97837d3 100644
--- a/qapi/machine.json
+++ b/qapi/machine.json
@@ -1297,7 +1297,7 @@
 #
 # @dies: number of dies per socket in the CPU topology
 #
-# @cores: number of cores per thread in the CPU topology
+# @cores: number of cores per die in the CPU topology
 #
 # @threads: number of threads per core in the CPU topology
 #
diff --git a/qemu-options.hx b/qemu-options.hx
index 83aa59a920..aee622f577 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -227,11 +227,13 @@ SRST
     of computing the CPU maximum count.
 
     Either the initial CPU count, or at least one of the topology parameters
-    must be specified. Values for any omitted parameters will be computed
-    from those which are given. Historically preference was given to the
-    coarsest topology parameters when computing missing values (ie sockets
-    preferred over cores, which were preferred over threads), however, this
-    behaviour is considered liable to change.
+    must be specified. The specified parameters must be greater than zero,
+    explicit configuration like "cpus=0" is not allowed. Values for any
+    omitted parameters will be computed from those which are given.
+    Historically preference was given to the coarsest topology parameters
+    when computing missing values (ie sockets preferred over cores, which
+    were preferred over threads), however, this behaviour is considered
+    liable to change.
 ERST
 
 DEF("numa", HAS_ARG, QEMU_OPTION_numa,
-- 
2.19.1



  parent reply	other threads:[~2021-08-19  3:15 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-08-19  3:10 [PATCH v6 00/16] machine: smp parsing fixes and improvement Yanan Wang
2021-08-19  3:10 ` [PATCH v6 01/16] docs/about/removed-features: Remove duplicated doc about -smp Yanan Wang
2021-08-19 11:26   ` Cornelia Huck
2021-08-19 12:20     ` wangyanan (Y)
2021-08-19 13:39   ` [PATCH, updated 1/2] " Yanan Wang
2021-08-19 13:50     ` [PATCH,updated " Cornelia Huck
2021-08-20  1:59       ` wangyanan (Y)
2021-08-19 13:39   ` [PATCH,updated 2/2] docs/about: Unify the subject format Yanan Wang
2021-08-19  3:10 ` Yanan Wang [this message]
2021-08-19 11:42   ` [PATCH v6 02/16] machine: Deprecate "parameter=0" SMP configurations Cornelia Huck
2021-08-19  3:10 ` [PATCH v6 03/16] machine: Minor refactor/fix for the smp parsers Yanan Wang
2021-08-19  3:10 ` [PATCH v6 04/16] machine: Uniformly use maxcpus to calculate the omitted parameters Yanan Wang
2021-08-19  3:10 ` [PATCH v6 05/16] machine: Set the value of cpus to match maxcpus if it's omitted Yanan Wang
2021-08-19  3:10 ` [PATCH v6 06/16] machine: Improve the error reporting of smp parsing Yanan Wang
2021-08-19  3:10 ` [PATCH v6 07/16] hw: Add compat machines for 6.2 Yanan Wang
2021-08-19  3:10 ` [PATCH v6 08/16] machine: Prefer cores over sockets in smp parsing since 6.2 Yanan Wang
2021-08-19  3:10 ` [PATCH v6 09/16] machine: Use ms instead of global current_machine in sanity-check Yanan Wang
2021-08-19  3:10 ` [PATCH v6 10/16] machine: Tweak the order of topology members in struct CpuTopology Yanan Wang
2021-08-19  3:10 ` [PATCH v6 11/16] machine: Make smp_parse generic enough for all arches Yanan Wang
2021-08-19  3:10 ` [PATCH v6 12/16] machine: Remove smp_parse callback from MachineClass Yanan Wang
2021-08-19  3:10 ` [PATCH v6 13/16] machine: Move smp_prefer_sockets to struct SMPCompatProps Yanan Wang
2021-08-19  3:10 ` [PATCH v6 14/16] machine: Put all sanity-check in the generic SMP parser Yanan Wang
2021-08-19  3:10 ` [PATCH v6 15/16] machine: Split out the smp parsing code Yanan Wang
2021-08-19  3:10 ` [PATCH v6 16/16] tests/unit: Add a unit test for smp parsing Yanan Wang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210819031027.41104-3-wangyanan55@huawei.com \
    --to=wangyanan55@huawei.com \
    --cc=berrange@redhat.com \
    --cc=cohuck@redhat.com \
    --cc=david@gibson.dropbear.id.au \
    --cc=drjones@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=groug@kaod.org \
    --cc=mst@redhat.com \
    --cc=pankaj.gupta.linux@gmail.com \
    --cc=pasic@linux.ibm.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=pmorel@linux.ibm.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=wanghaibin.wang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.