[Question] Format of memory node name

From: Gavin Shan
Date: Wed Jun 02 2021 - 22:37:56 EST


Hi Rob,

Currently, I'm looking into one QEMU bug which is related to FDT memory
nodes. The story is 4 NUMA nodes are specified by the command line, which
is used to start the VM. QEMU needs to create 4 FDT memory nodes for them
and their names are following the format (memory@unit-address) as stated
in the device-tree specification. The 'unit-address' is base address in
'reg' property. Unfortunately, one NUMA node's base address is exactly
same to another one. It means there are two conflicting two memory node
because of their names. It leads to the FDT can't be populated successfully.

For example, the last memory node can't be created because of its conflicting
name in the following scheme.

NUMA ID Base address End address Memory node name
-------------------------------------------------------------------
0 0x00000000 0x20000000 memory@00000000
1 0x20000000 0x40000000 memory@20000000
2 0x40000000 0x40000000 memory@40000000
3 0x40000000 0x40000000 memory@40000000

I'm trying to resolve the issue. There are two options as below. However,
it's not certain the solution will beak the device-tree specification. So
I'm checking with you on this.

(1) Replace the 'unit-address' with NUMA ID
memory@0
memory@1
memory@2
memory@3

(2) Add suffix to the conflicting memory node names
memory@00000000
memory@20000000
memory@40000000
memory@40000000-0

Thanks,
Gavin

[link] https://patchwork.kernel.org/project/qemu-devel/patch/20210601073004.106490-1-gshan@xxxxxxxxxx/