[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v9 3/6] hw/arm/virt: Consider SMP configuration in CPU topology
From: |
Gavin Shan |
Subject: |
[PATCH v9 3/6] hw/arm/virt: Consider SMP configuration in CPU topology |
Date: |
Tue, 3 May 2022 22:03:01 +0800 |
Currently, the SMP configuration isn't considered when the CPU
topology is populated. In this case, it's impossible to provide
the default CPU-to-NUMA mapping or association based on the socket
ID of the given CPU.
This takes account of SMP configuration when the CPU topology
is populated. The die ID for the given CPU isn't assigned since
it's not supported on arm/virt machine. Besides, the used SMP
configuration in qtest/numa-test/aarch64_numa_cpu() is corrcted
to avoid testing failure
Signed-off-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Yanan Wang <wangyanan55@huawei.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
---
hw/arm/virt.c | 15 ++++++++++++++-
1 file changed, 14 insertions(+), 1 deletion(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index f94278935f..6df3981b1e 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -2560,6 +2560,7 @@ static const CPUArchIdList
*virt_possible_cpu_arch_ids(MachineState *ms)
int n;
unsigned int max_cpus = ms->smp.max_cpus;
VirtMachineState *vms = VIRT_MACHINE(ms);
+ MachineClass *mc = MACHINE_GET_CLASS(vms);
if (ms->possible_cpus) {
assert(ms->possible_cpus->len == max_cpus);
@@ -2573,8 +2574,20 @@ static const CPUArchIdList
*virt_possible_cpu_arch_ids(MachineState *ms)
ms->possible_cpus->cpus[n].type = ms->cpu_type;
ms->possible_cpus->cpus[n].arch_id =
virt_cpu_mp_affinity(vms, n);
+
+ assert(!mc->smp_props.dies_supported);
+ ms->possible_cpus->cpus[n].props.has_socket_id = true;
+ ms->possible_cpus->cpus[n].props.socket_id =
+ n / (ms->smp.clusters * ms->smp.cores * ms->smp.threads);
+ ms->possible_cpus->cpus[n].props.has_cluster_id = true;
+ ms->possible_cpus->cpus[n].props.cluster_id =
+ (n / (ms->smp.cores * ms->smp.threads)) % ms->smp.clusters;
+ ms->possible_cpus->cpus[n].props.has_core_id = true;
+ ms->possible_cpus->cpus[n].props.core_id =
+ (n / ms->smp.threads) % ms->smp.cores;
ms->possible_cpus->cpus[n].props.has_thread_id = true;
- ms->possible_cpus->cpus[n].props.thread_id = n;
+ ms->possible_cpus->cpus[n].props.thread_id =
+ n % ms->smp.threads;
}
return ms->possible_cpus;
}
--
2.23.0
- [PATCH v9 0/6] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/05/03
- [PATCH v9 2/6] qtest/numa-test: Specify CPU topology in aarch64_numa_cpu(), Gavin Shan, 2022/05/03
- [PATCH v9 3/6] hw/arm/virt: Consider SMP configuration in CPU topology,
Gavin Shan <=
- [PATCH v9 6/6] hw/acpi/aml-build: Use existing CPU topology to build PPTT table, Gavin Shan, 2022/05/03
- [PATCH v9 5/6] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/05/03
- [PATCH v9 1/6] qapi/machine.json: Add cluster-id, Gavin Shan, 2022/05/03
- [PATCH v9 4/6] qtest/numa-test: Correct CPU and NUMA association in aarch64_numa_cpu(), Gavin Shan, 2022/05/03
- Re: [PATCH v9 0/6] hw/arm/virt: Fix CPU's default NUMA node ID, Gavin Shan, 2022/05/08