Re: [PATCH 04/14] hw/core/machine-smp: Calculate total CPUs once in machine_parse_smp_config()

2024-03-06 Thread Philippe Mathieu-Daudé

On 6/3/24 10:53, Zhao Liu wrote:

From: Zhao Liu 

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 
---
  hw/core/machine-smp.c | 8 
  1 file changed, 4 insertions(+), 4 deletions(-)


Reviewed-by: Philippe Mathieu-Daudé 




[PATCH 04/14] hw/core/machine-smp: Calculate total CPUs once in machine_parse_smp_config()

2024-03-06 Thread Zhao Liu
From: Zhao Liu 

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 
---
 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