All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhao Liu <zhao1.liu@linux.intel.com>
To: "Eduardo Habkost" <eduardo@habkost.net>,
	"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
	"Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Yanan Wang" <wangyanan55@huawei.com>,
	"Daniel P . Berrangé" <berrange@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Igor Mammedov" <imammedo@redhat.com>,
	"Prasad Pandit" <ppandit@redhat.com>,
	qemu-devel@nongnu.org
Cc: Xiaoling Song <xiaoling.song@intel.com>, Zhao Liu <zhao1.liu@intel.com>
Subject: [PATCH 04/14] hw/core/machine-smp: Calculate total CPUs once in machine_parse_smp_config()
Date: Wed,  6 Mar 2024 17:53:57 +0800	[thread overview]
Message-ID: <20240306095407.3058909-5-zhao1.liu@linux.intel.com> (raw)
In-Reply-To: <20240306095407.3058909-1-zhao1.liu@linux.intel.com>

From: Zhao Liu <zhao1.liu@intel.com>

In machine_parse_smp_config(), the number of total CPUs is calculated
by:

    drawers * books * sockets * dies * clusters * cores * threads

To avoid missing the future new topology level, use a local variable to
cache the calculation result so that total CPUs are only calculated
once.

Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
---
 hw/core/machine-smp.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/hw/core/machine-smp.c b/hw/core/machine-smp.c
index 3d9799aef039..0e398ef02666 100644
--- a/hw/core/machine-smp.c
+++ b/hw/core/machine-smp.c
@@ -91,6 +91,7 @@ void machine_parse_smp_config(MachineState *ms,
     unsigned cores    = config->cores;
     unsigned threads  = config->threads;
     unsigned maxcpus  = config->maxcpus;
+    unsigned total_cpus;
 
     /*
      * Specified CPU topology parameters must be greater than zero,
@@ -211,8 +212,8 @@ void machine_parse_smp_config(MachineState *ms,
         }
     }
 
-    maxcpus = maxcpus > 0 ? maxcpus : drawers * books * sockets * dies *
-                                      clusters * cores * threads;
+    total_cpus = drawers * books * sockets * dies * clusters * cores * threads;
+    maxcpus = maxcpus > 0 ? maxcpus : total_cpus;
     cpus = cpus > 0 ? cpus : maxcpus;
 
     ms->smp.cpus = cpus;
@@ -228,8 +229,7 @@ void machine_parse_smp_config(MachineState *ms,
     mc->smp_props.has_clusters = config->has_clusters;
 
     /* sanity-check of the computed topology */
-    if (drawers * books * sockets * dies * clusters * cores * threads !=
-        maxcpus) {
+    if (total_cpus != maxcpus) {
         g_autofree char *topo_msg = cpu_hierarchy_to_string(ms);
         error_setg(errp, "Invalid CPU topology: "
                    "product of the hierarchy must match maxcpus: "
-- 
2.34.1



  parent reply	other threads:[~2024-03-06  9:41 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-06  9:53 [PATCH 00/14] Cleanup on SMP and its test Zhao Liu
2024-03-06  9:53 ` [PATCH 01/14] hw/core/machine-smp: Remove deprecated "parameter=0" SMP configurations Zhao Liu
2024-03-06  9:53 ` [PATCH 02/14] hw/core/machine-smp: Deprecate unsupported "parameter=1" " Zhao Liu
2024-03-07  6:22   ` Thomas Huth
2024-03-07  7:07     ` Zhao Liu
2024-03-06  9:53 ` [PATCH 03/14] hw/core/machine-smp: Simplify variables' initialization in machine_parse_smp_config() Zhao Liu
2024-03-08 13:20   ` Thomas Huth
2024-03-08 15:33     ` Zhao Liu
2024-03-10 11:55       ` Prasad Pandit
2024-03-11  5:20         ` Zhao Liu
2024-03-13 10:52           ` Prasad Pandit
2024-03-18  8:06             ` Zhao Liu
2024-03-18 11:18               ` Prasad Pandit
2024-03-06  9:53 ` Zhao Liu [this message]
2024-03-06 20:56   ` [PATCH 04/14] hw/core/machine-smp: Calculate total CPUs once " Philippe Mathieu-Daudé
2024-03-06  9:53 ` [PATCH 05/14] tests/unit/test-smp-parse: Drop the unsupported "dies=1" case Zhao Liu
2024-03-08 13:22   ` Thomas Huth
2024-03-06  9:53 ` [PATCH 06/14] tests/unit/test-smp-parse: Use CPU number macros in invalid topology case Zhao Liu
2024-03-06  9:54 ` [PATCH 07/14] tests/unit/test-smp-parse: Bump max_cpus to 4096 Zhao Liu
2024-03-07  6:01   ` Thomas Huth
2024-03-07  7:03     ` Zhao Liu
2024-03-06  9:54 ` [PATCH 08/14] tests/unit/test-smp-parse: Make test cases aware of the book/drawer Zhao Liu
2024-03-06  9:54 ` [PATCH 09/14] tests/unit/test-smp-parse: Test "books" parameter in -smp Zhao Liu
2024-03-06  9:54 ` [PATCH 10/14] tests/unit/test-smp-parse: Test "drawers" " Zhao Liu
2024-03-06  9:54 ` [PATCH 11/14] tests/unit/test-smp-parse: Test "drawers" and "books" combination case Zhao Liu
2024-03-07  6:07   ` Thomas Huth
2024-03-06  9:54 ` [PATCH 12/14] tests/unit/test-smp-parse: Test the full 7-levels topology hierarchy Zhao Liu
2024-03-06  9:54 ` [PATCH 13/14] tests/unit/test-smp-parse: Test smp_props.has_clusters Zhao Liu
2024-03-06  9:54 ` [PATCH 14/14] tests/unit/test-smp-parse: Test "parameter=0" SMP configurations Zhao Liu
2024-03-07  6:11   ` Thomas Huth
2024-03-06 21:07 ` [PATCH 00/14] Cleanup on SMP and its test Philippe Mathieu-Daudé
2024-03-07  7:25   ` Zhao Liu

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=20240306095407.3058909-5-zhao1.liu@linux.intel.com \
    --to=zhao1.liu@linux.intel.com \
    --cc=berrange@redhat.com \
    --cc=eduardo@habkost.net \
    --cc=imammedo@redhat.com \
    --cc=marcel.apfelbaum@gmail.com \
    --cc=philmd@linaro.org \
    --cc=ppandit@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=thuth@redhat.com \
    --cc=wangyanan55@huawei.com \
    --cc=xiaoling.song@intel.com \
    --cc=zhao1.liu@intel.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.