Introduce initialize_topo_info to initialize X86CPUTopoInfo data structure to build the topology. No functional change.
Signed-off-by: Babu Moger <babu.mo...@amd.com> --- hw/i386/pc.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/hw/i386/pc.c b/hw/i386/pc.c index f71389ad9f..504e1ab083 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -918,6 +918,17 @@ bool e820_get_entry(int idx, uint32_t type, uint64_t *address, uint64_t *length) return false; } +static inline void initialize_topo_info(X86CPUTopoInfo *topo_info, + PCMachineState *pcms, + const MachineState *ms) +{ + topo_info->nr_dies = pcms->smp_dies; + topo_info->nr_cores = ms->smp.cores; + topo_info->nr_threads = ms->smp.threads; + topo_info->nr_sockets = ms->smp.sockets; + topo_info->numa_nodes = nb_numa_nodes; +} + /* Calculates initial APIC ID for a specific CPU index * * Currently we need to be able to calculate the APIC ID from the CPU index @@ -934,9 +945,7 @@ static uint32_t x86_cpu_apic_id_from_index(PCMachineState *pcms, uint32_t correct_id; static bool warned; - topo_info.nr_dies = pcms->smp_dies; - topo_info.nr_cores = ms->smp.cores; - topo_info.nr_threads = ms->smp.threads; + initialize_topo_info(&topo_info, pcms, ms); correct_id = x86_apicid_from_cpu_idx(&topo_info, cpu_index); if (pcmc->compat_apic_id_mode) { @@ -2399,9 +2408,7 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev, return; } - topo_info.nr_dies = pcms->smp_dies; - topo_info.nr_cores = smp_cores; - topo_info.nr_threads = smp_threads; + initialize_topo_info(&topo_info, pcms, ms); env->nr_dies = pcms->smp_dies; @@ -2859,9 +2866,7 @@ static int64_t pc_get_default_cpu_node_id(const MachineState *ms, int idx) PCMachineState *pcms = PC_MACHINE(ms); X86CPUTopoInfo topo_info; - topo_info.nr_dies = pcms->smp_dies; - topo_info.nr_cores = ms->smp.cores; - topo_info.nr_threads = ms->smp.threads; + initialize_topo_info(&topo_info, pcms, ms); assert(idx < ms->possible_cpus->len); x86_topo_ids_from_apicid(ms->possible_cpus->cpus[idx].arch_id, @@ -2876,9 +2881,6 @@ static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *ms) X86CPUTopoInfo topo_info; int i; - topo_info.nr_dies = pcms->smp_dies; - topo_info.nr_cores = ms->smp.cores; - topo_info.nr_threads = ms->smp.threads; if (ms->possible_cpus) { /* @@ -2891,6 +2893,9 @@ static const CPUArchIdList *pc_possible_cpu_arch_ids(MachineState *ms) ms->possible_cpus = g_malloc0(sizeof(CPUArchIdList) + sizeof(CPUArchId) * max_cpus); + + initialize_topo_info(&topo_info, pcms, ms); + ms->possible_cpus->len = max_cpus; for (i = 0; i < ms->possible_cpus->len; i++) { X86CPUTopoIDs topo_ids;