aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBabu Moger <babu.moger@amd.com>2020-03-11 17:53:06 -0500
committerEduardo Habkost <ehabkost@redhat.com>2020-03-17 19:48:10 -0400
commit8cb30e3aec07cb85fe424191e37cf983a2ac5416 (patch)
treeaa8ddf8acf8e51c08b4bd40966a591ffba82dadf
parentf20dec0b638d1ebb4ef2f71d51ea1c540402bc7c (diff)
downloadqemu-8cb30e3aec07cb85fe424191e37cf983a2ac5416.zip
qemu-8cb30e3aec07cb85fe424191e37cf983a2ac5416.tar.gz
qemu-8cb30e3aec07cb85fe424191e37cf983a2ac5416.tar.bz2
machine: Add SMP Sockets in CpuTopology
Store the smp sockets in CpuTopology. The socket information required to build the apic id in EPYC mode. Right now socket information is not passed to down when decoding the apic id. Add the socket information here. Signed-off-by: Babu Moger <babu.moger@amd.com> Reviewed-by: Eduardo Habkost <ehabkost@redhat.com> Reviewed-by: Igor Mammedov <imammedo@redhat.com> Acked-by: Michael S. Tsirkin <mst@redhat.com> Message-Id: <158396718647.58170.2278448323151215741.stgit@naples-babu.amd.com>
-rw-r--r--hw/core/machine.c1
-rw-r--r--hw/i386/pc.c1
-rw-r--r--include/hw/boards.h2
-rw-r--r--softmmu/vl.c1
4 files changed, 5 insertions, 0 deletions
diff --git a/hw/core/machine.c b/hw/core/machine.c
index 4778bc6..b958cd1 100644
--- a/hw/core/machine.c
+++ b/hw/core/machine.c
@@ -757,6 +757,7 @@ static void smp_parse(MachineState *ms, QemuOpts *opts)
ms->smp.cpus = cpus;
ms->smp.cores = cores;
ms->smp.threads = threads;
+ ms->smp.sockets = sockets;
}
if (ms->smp.cpus > 1) {
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 662abb5..05e7f10 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -781,6 +781,7 @@ void pc_smp_parse(MachineState *ms, QemuOpts *opts)
ms->smp.cpus = cpus;
ms->smp.cores = cores;
ms->smp.threads = threads;
+ ms->smp.sockets = sockets;
x86ms->smp_dies = dies;
}
diff --git a/include/hw/boards.h b/include/hw/boards.h
index c96120d..236d239 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -236,12 +236,14 @@ typedef struct DeviceMemoryState {
* @cpus: the number of present logical processors on the machine
* @cores: the number of cores in one package
* @threads: the number of threads in one core
+ * @sockets: the number of sockets on the machine
* @max_cpus: the maximum number of logical processors on the machine
*/
typedef struct CpuTopology {
unsigned int cpus;
unsigned int cores;
unsigned int threads;
+ unsigned int sockets;
unsigned int max_cpus;
} CpuTopology;
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 6a28592..1d33a28 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -3946,6 +3946,7 @@ void qemu_init(int argc, char **argv, char **envp)
current_machine->smp.max_cpus = machine_class->default_cpus;
current_machine->smp.cores = 1;
current_machine->smp.threads = 1;
+ current_machine->smp.sockets = 1;
machine_class->smp_parse(current_machine,
qemu_opts_find(qemu_find_opts("smp-opts"), NULL));