Add a cluster level between core level and package level for ARM device tree.
Signed-off-by: Yanan Wang <wangyana...@huawei.com> --- hw/arm/virt.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/hw/arm/virt.c b/hw/arm/virt.c index c9ad76ff64..d78db3387e 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -430,14 +430,20 @@ static void fdt_add_cpu_nodes(const VirtMachineState *vms) if (ms->smp.threads > 1) { map_path = g_strdup_printf( - "/cpus/cpu-map/%s%d/%s%d/%s%d", - "socket", cpu / (ms->smp.cores * ms->smp.threads), + "/cpus/cpu-map/%s%d/%s%d/%s%d/%s%d", + "socket", + cpu / (ms->smp.clusters * ms->smp.cores * + ms->smp.threads), + "cluster", + (cpu / (ms->smp.cores * ms->smp.threads)) % + ms->smp.clusters, "core", (cpu / ms->smp.threads) % ms->smp.cores, "thread", cpu % ms->smp.threads); } else { map_path = g_strdup_printf( - "/cpus/cpu-map/%s%d/%s%d", - "socket", cpu / ms->smp.cores, + "/cpus/cpu-map/%s%d/%s%d/%s%d", + "socket", cpu / (ms->smp.clusters * ms->smp.cores), + "cluster", (cpu / ms->smp.cores) % ms->smp.clusters, "core", cpu % ms->smp.cores); } qemu_fdt_add_path(vms->fdt, map_path); -- 2.19.1