[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v6 2/7] hw/arm/virt: Support cluster level in DT cpu-map
From: |
Yanan Wang |
Subject: |
[PATCH v6 2/7] hw/arm/virt: Support cluster level in DT cpu-map |
Date: |
Mon, 3 Jan 2022 16:46:31 +0800 |
Support one cluster level between core and physical package in the
cpu-map of Arm/virt devicetree. This is also consistent with Linux
Doc "Documentation/devicetree/bindings/cpu/cpu-topology.txt".
Signed-off-by: Yanan Wang <wangyanan55@huawei.com>
---
hw/arm/virt.c | 15 ++++++++-------
1 file changed, 8 insertions(+), 7 deletions(-)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index f413e146d9..fc5eea8c8c 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -430,9 +430,8 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
* can contain several layers of clustering within a single physical
* package and cluster nodes can be contained in parent cluster nodes.
*
- * Given that cluster is not yet supported in the vCPU topology,
- * we currently generate one cluster node within each socket node
- * by default.
+ * Note: currently we only support one layer of clustering within
+ * each physical package.
*/
qemu_fdt_add_subnode(ms->fdt, "/cpus/cpu-map");
@@ -442,14 +441,16 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms)
if (ms->smp.threads > 1) {
map_path = g_strdup_printf(
- "/cpus/cpu-map/socket%d/cluster0/core%d/thread%d",
- cpu / (ms->smp.cores * ms->smp.threads),
+ "/cpus/cpu-map/socket%d/cluster%d/core%d/thread%d",
+ cpu / (ms->smp.clusters * ms->smp.cores * ms->smp.threads),
+ (cpu / (ms->smp.cores * ms->smp.threads)) %
ms->smp.clusters,
(cpu / ms->smp.threads) % ms->smp.cores,
cpu % ms->smp.threads);
} else {
map_path = g_strdup_printf(
- "/cpus/cpu-map/socket%d/cluster0/core%d",
- cpu / ms->smp.cores,
+ "/cpus/cpu-map/socket%d/cluster%d/core%d",
+ cpu / (ms->smp.clusters * ms->smp.cores),
+ (cpu / ms->smp.cores) % ms->smp.clusters,
cpu % ms->smp.cores);
}
qemu_fdt_add_path(ms->fdt, map_path);
--
2.27.0
- [PATCH v6 0/7] ARM virt: Support CPU cluster topology, Yanan Wang, 2022/01/03
- [PATCH v6 1/7] hw/arm/virt: Support CPU cluster on ARM virt machine, Yanan Wang, 2022/01/03
- [PATCH v6 4/7] hw/arm/virt-acpi-build: Make an ARM specific PPTT generator, Yanan Wang, 2022/01/03
- [PATCH v6 6/7] hw/arm/virt-acpi-build: Support cluster level in PPTT generation, Yanan Wang, 2022/01/03
- [PATCH v6 2/7] hw/arm/virt: Support cluster level in DT cpu-map,
Yanan Wang <=
- [PATCH v6 3/7] hw/acpi/aml-build: Improve scalability of PPTT generation, Yanan Wang, 2022/01/03
- [PATCH v6 5/7] tests/acpi/bios-tables-test: Allow changes to virt/PPTT file, Yanan Wang, 2022/01/03
- [PATCH v6 7/7] tests/acpi/bios-table-test: Update expected virt/PPTT file, Yanan Wang, 2022/01/03