[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-trivial] [Qemu-devel] [PATCH v3 01/10] hw/boards: Add struct CpuTo
From: |
Like Xu |
Subject: |
[Qemu-trivial] [Qemu-devel] [PATCH v3 01/10] hw/boards: Add struct CpuTopology to MachineState |
Date: |
Sun, 19 May 2019 04:54:19 +0800 |
The cpu topology property CpuTopology is added to the MachineState
and its members are initialized with the leagcy global smp variables.
>From this commit, the code in the system emulation mode is supposed to
use cpu topology variables from MachineState instead of the global ones
defined in vl.c and there is no semantic change.
Suggested-by: Igor Mammedov <address@hidden>
Suggested-by: Eduardo Habkost <address@hidden>
Signed-off-by: Like Xu <address@hidden>
Reviewed-by: Alistair Francis <address@hidden>
---
include/hw/boards.h | 15 +++++++++++++++
vl.c | 5 +++++
2 files changed, 20 insertions(+)
diff --git a/include/hw/boards.h b/include/hw/boards.h
index 6f7916f88f..bc23b5db1d 100644
--- a/include/hw/boards.h
+++ b/include/hw/boards.h
@@ -230,6 +230,20 @@ typedef struct DeviceMemoryState {
MemoryRegion mr;
} DeviceMemoryState;
+/**
+ * CpuTopology:
+ * @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
+ * @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 max_cpus;
+} CpuTopology;
+
/**
* MachineState:
*/
@@ -272,6 +286,7 @@ struct MachineState {
const char *cpu_type;
AccelState *accelerator;
CPUArchIdList *possible_cpus;
+ CpuTopology smp;
struct NVDIMMState *nvdimms_state;
};
diff --git a/vl.c b/vl.c
index c8ca9ff6ff..40b006577b 100644
--- a/vl.c
+++ b/vl.c
@@ -4133,6 +4133,11 @@ int main(int argc, char **argv, char **envp)
smp_parse(qemu_opts_find(qemu_find_opts("smp-opts"), NULL));
+ current_machine->smp.cpus = smp_cpus;
+ current_machine->smp.max_cpus = max_cpus;
+ current_machine->smp.cores = smp_cores;
+ current_machine->smp.threads = smp_threads;
+
/* sanity-check smp_cpus and max_cpus against machine_class */
if (smp_cpus < machine_class->min_cpus) {
error_report("Invalid SMP CPUs %d. The min CPUs "
--
2.21.0
- [Qemu-trivial] [Qemu-devel] [PATCH v3 00/10] Refactor cpu topo into machine properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 01/10] hw/boards: Add struct CpuTopology to MachineState,
Like Xu <=
- [Qemu-trivial] [Qemu-devel] [PATCH v3 06/10] hw/s390x: Replace global smp variables with machine smp properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 05/10] hw/riscv: Replace global smp variables with machine smp properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 04/10] hw/ppc: Replace global smp variables with machine smp properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 02/10] machine: Refactor smp-related call chains to pass MachineState, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 03/10] general: Replace global smp variables with smp machine properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 07/10] hw/i386: Replace global smp variables with machine smp properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 09/10] hw: Replace global smp variables with MachineState for all remaining archs, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 10/10] vl.c: Replace smp global variables with smp machine properties, Like Xu, 2019/05/19
- [Qemu-trivial] [Qemu-devel] [PATCH v3 08/10] hw/arm: Replace global smp variables with machine smp properties, Like Xu, 2019/05/19