On Sat, Apr 23, 2016 at 09:16:11AM +0800, Shannon Zhao wrote: > > > On 2016/4/22 20:48, Andrew Jones wrote: > > On Thu, Apr 21, 2016 at 02:23:52PM +0800, Shannon Zhao wrote: > >> From: Shannon Zhao <shannon.z...@linaro.org> > >> > >> When specifying NUMA for ARM machine, generate /memory node according to > >> NUMA topology. > >> > >> Signed-off-by: Shannon Zhao <shannon.z...@linaro.org> > >> --- > >> hw/arm/boot.c | 31 ++++++++++++++++++++++++++++++- > >> 1 file changed, 30 insertions(+), 1 deletion(-) > >> > >> diff --git a/hw/arm/boot.c b/hw/arm/boot.c > >> index 5975fbf..3770235 100644 > >> --- a/hw/arm/boot.c > >> +++ b/hw/arm/boot.c > >> @@ -14,6 +14,7 @@ > >> #include "hw/arm/linux-boot-if.h" > >> #include "sysemu/kvm.h" > >> #include "sysemu/sysemu.h" > >> +#include "sysemu/numa.h" > >> #include "hw/boards.h" > >> #include "hw/loader.h" > >> #include "elf.h" > >> @@ -405,6 +406,9 @@ static int load_dtb(hwaddr addr, const struct > >> arm_boot_info *binfo, > >> void *fdt = NULL; > >> int size, rc; > >> uint32_t acells, scells; > >> + char *nodename; > >> + unsigned int i; > >> + hwaddr mem_base, mem_len; > >> > >> if (binfo->dtb_filename) { > >> char *filename; > >> @@ -456,14 +460,39 @@ static int load_dtb(hwaddr addr, const struct > >> arm_boot_info *binfo, > >> goto fail; > >> } > >> > >> + mem_len = (nb_numa_nodes > 0) ? numa_info[0].node_mem : > >> binfo->ram_size; > >> rc = qemu_fdt_setprop_sized_cells(fdt, "/memory", "reg", > > > > So node0's memory node will still be called '/memory' instead of > > '/memory@addr' like the other nodes? Shouldn't we change it too? > > > Previously I deleted the /memory node creation codes in virt.c and > create here, but that will cause other boards booting fail since > load_dtb() is a common function. So to avoid more changes to other > files, I just use current way. So is there any way to change the node > name after it's created in qemu?
I'm not sure if that's possible, but we could maybe use qemu_fdt_nop_node to turn /memory into a NOP node, and then add a new one? drew