[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 1/5] ARM: Virt: Add /distance-map node for NUMA
From: |
Shannon Zhao |
Subject: |
[Qemu-devel] [PATCH v4 1/5] ARM: Virt: Add /distance-map node for NUMA |
Date: |
Sat, 23 Jan 2016 19:36:42 +0800 |
From: Shannon Zhao <address@hidden>
This /distance-map node is used to describe the accessing distance
between NUMA nodes.
Signed-off-by: Shannon Zhao <address@hidden>
---
hw/arm/virt.c | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/hw/arm/virt.c b/hw/arm/virt.c
index 15658f4..c725e29 100644
--- a/hw/arm/virt.c
+++ b/hw/arm/virt.c
@@ -39,6 +39,7 @@
#include "sysemu/device_tree.h"
#include "sysemu/sysemu.h"
#include "sysemu/kvm.h"
+#include "sysemu/numa.h"
#include "hw/boards.h"
#include "hw/loader.h"
#include "exec/address-spaces.h"
@@ -183,6 +184,9 @@ static VirtBoardInfo *find_machine_info(const char *cpu)
static void create_fdt(VirtBoardInfo *vbi)
{
+ unsigned int i, j, number, count;
+ uint64_t *matrix;
+
void *fdt = create_device_tree(&vbi->fdt_size);
if (!fdt) {
@@ -219,6 +223,32 @@ static void create_fdt(VirtBoardInfo *vbi)
"clk24mhz");
qemu_fdt_setprop_cell(fdt, "/apb-pclk", "phandle", vbi->clock_phandle);
+ if (nb_numa_nodes <= 0) {
+ return;
+ }
+
+ /* Add /distance-map node for NUMA */
+ qemu_fdt_add_subnode(fdt, "/distance-map");
+ qemu_fdt_setprop_string(fdt, "/distance-map", "compatible",
+ "numa,distance-map-v1");
+
+ number = nb_numa_nodes * nb_numa_nodes * 6;
+ matrix = g_malloc0(number * sizeof(uint64_t));
+ for (i = 0; i < nb_numa_nodes; i++) {
+ for (j = 0; j < nb_numa_nodes; j++) {
+ count = (i * nb_numa_nodes + j) * 6;
+ matrix[count++] = 1;
+ matrix[count++] = i;
+ matrix[count++] = 1;
+ matrix[count++] = j;
+ matrix[count++] = 1;
+ matrix[count++] = (i == j) ? 10 : 20;
+ }
+ }
+ qemu_fdt_setprop_sized_cells_from_array(fdt, "/distance-map",
+ "distance-matrix", number / 2,
+ matrix);
+ g_free(matrix);
}
static void fdt_add_psci_node(const VirtBoardInfo *vbi)
--
2.0.4
- [Qemu-devel] [PATCH v4 0/5] ARM: Add NUMA support for machine virt, Shannon Zhao, 2016/01/23
- [Qemu-devel] [PATCH v4 4/5] include/hw/acpi/acpi-defs: Add GICC Affinity Structure, Shannon Zhao, 2016/01/23
- [Qemu-devel] [PATCH v4 1/5] ARM: Virt: Add /distance-map node for NUMA,
Shannon Zhao <=
- [Qemu-devel] [PATCH v4 2/5] ARM: Virt: Set numa-node-id for CPUs, Shannon Zhao, 2016/01/23
- [Qemu-devel] [PATCH v4 5/5] hw/arm/virt-acpi-build: Generate SRAT table, Shannon Zhao, 2016/01/23
- [Qemu-devel] [PATCH v4 3/5] ARM: Add numa-node-id for /memory node, Shannon Zhao, 2016/01/23
- Re: [Qemu-devel] [PATCH v4 0/5] ARM: Add NUMA support for machine virt, Ashok Kumar, 2016/01/29