diff options
author | Zhao Liu <zhao1.liu@intel.com> | 2023-06-28 21:54:35 +0800 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2023-07-10 16:17:08 -0400 |
commit | d79a284a44bb7d88b233fb6bb12ea3723f43469d (patch) | |
tree | 39b51432c13389a24ad2933064d05cbcfe80ead2 | |
parent | a1d027be95bc375238e5b9292c6aa661a8ddef4c (diff) | |
download | qemu-d79a284a44bb7d88b233fb6bb12ea3723f43469d.zip qemu-d79a284a44bb7d88b233fb6bb12ea3723f43469d.tar.gz qemu-d79a284a44bb7d88b233fb6bb12ea3723f43469d.tar.bz2 |
hw/smbios: Fix smbios_smp_sockets caculation
smp.sockets is the number of sockets which is configured by "-smp" (
otherwise, the default is 1). Trying to recalculate it here with another
rules leads to errors, such as:
1. 003f230e37d7 ("machine: Tweak the order of topology members in struct
CpuTopology") changes the meaning of smp.cores but doesn't fix
original smp.cores uses.
With the introduction of cluster, now smp.cores means the number of
cores in one cluster. So smp.cores * smp.threads just means the
threads in a cluster not in a socket.
2. On the other hand, we shouldn't use smp.cpus here because it
indicates the initial number of online CPUs at the boot time, and is
not mathematically related to smp.sockets.
So stop reinventing the another wheel and use the topo values that
has been calculated.
Fixes: 003f230e37d7 ("machine: Tweak the order of topology members in struct CpuTopology")
Signed-off-by: Zhao Liu <zhao1.liu@intel.com>
Message-Id: <20230628135437.1145805-3-zhao1.liu@linux.intel.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | hw/smbios/smbios.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index d2007e7..d67415d 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -1088,8 +1088,7 @@ void smbios_get_tables(MachineState *ms, smbios_build_type_2_table(); smbios_build_type_3_table(); - smbios_smp_sockets = DIV_ROUND_UP(ms->smp.cpus, - ms->smp.cores * ms->smp.threads); + smbios_smp_sockets = ms->smp.sockets; assert(smbios_smp_sockets >= 1); for (i = 0; i < smbios_smp_sockets; i++) { |