Skip to contentSkip to conversation

Documentation, dt, numa: Add note to empty NUMA node

PATCH Superseded Gavin Shan 3 participants 9 messages Jun 25, 2021 – Jun 28, 2021 Device tree bindings

v4 of 6 Superseded Latest is v6 →

lore
Share & tools
lore

Gavin Shan

author
#0 lore raw

PATCH v4 1/1 Documentation, dt, numa: Add note to empty NUMA node

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
 Documentation/devicetree/bindings/numa.txt | 4 ++++
 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +4 -0
index 21b35053ca5a..0fc882e44270 100644
@@ -109,6 +109,10 @@ Example:
 Dual socket system consists of 2 boards connected through ccn bus and
 each board having one socket/soc of 8 cpus, memory and pci bus.
 
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.
+
 	memory@c00000 {
 		device_type = "memory";
 		reg = <0x0 0xc00000 0x0 0x80000000>;
Signature · 1 line
2.23.0
Acked-by on v4 1/1
#1 lore raw
Quoted 9 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

Thanks.

Quoted 20 lines
---
 Documentation/devicetree/bindings/numa.txt | 4 ++++
 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +4 -0
index 21b35053ca5a..0fc882e44270 100644
@@ -109,6 +109,10 @@ Example:
 Dual socket system consists of 2 boards connected through ccn bus and
 each board having one socket/soc of 8 cpus, memory and pci bus.
 
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.
+
 	memory@c00000 {
 		device_type = "memory";
 		reg = <0x0 0xc00000 0x0 0x80000000>;
#2 lore raw
In reply to Gavin Shan
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
 Documentation/devicetree/bindings/numa.txt | 4 ++++
 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 114

Quoted 6 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
 Dual socket system consists of 2 boards connected through ccn bus and
 each board having one socket/soc of 8 cpus, memory and pci bus.
 
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Thanks,
drew

Quoted 7 lines
Documentation/devicetree/bindings/numa.txt +1 -0
+
 	memory@c00000 {
 		device_type = "memory";
 		reg = <0x0 0xc00000 0x0 0x80000000>;
Signature · 1 line
2.23.0
#3 lore raw
Quoted 28 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
 Documentation/devicetree/bindings/numa.txt | 4 ++++
 1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 114

Quoted 6 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
 Dual socket system consists of 2 boards connected through ccn bus and
 each board having one socket/soc of 8 cpus, memory and pci bus.
 
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

Quoted 8 lines

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 14 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Thanks,
drew

Quoted 7 lines
Documentation/devicetree/bindings/numa.txt +1 -0
+
 	memory@c00000 {
 		device_type = "memory";
 		reg = <0x0 0xc00000 0x0 0x80000000>;
Signature · 1 line
2.23.0
author
#4 lore raw
Quoted 32 lines · Andrew Jones
Quoted 31 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
  Documentation/devicetree/bindings/numa.txt | 4 ++++
  1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 114

Quoted 6 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
  Dual socket system consists of 2 boards connected through ccn bus and
  each board having one socket/soc of 8 cpus, memory and pci bus.
 
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

Quoted 12 lines
Quoted 5 lines

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 4 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Drew, thanks for your comments. Yeah, it sounds sensible to create a new section for it and an example would be more helpful. Please check if below changes are fine to you. I probably need Randy's review again.

I'm trying to avoid too many revisions for this sort of trivial patch, even though I already had. However, it's time frame for v5.14 and I'm pushing this to be merged during the cycle.

Documentation/devicetree/bindings/numa.txt +59 -1
@@ -103,7 +103,65 @@ Example:
 		};
 
 ==============================================================================
-4 - Example dts
+4 - Empty memory node
+==============================================================================
+
+Empty memory nodes, which no memory resides in, are allowed. The 'length'
+field of 'reg' property is zero, but 'base-address' is dummy and invalid
+for these empty memory nodes. However, the NUMA node IDs and distance maps
+for them are still valid, but memory may be added into them through hotplug
+afterwards.
+
+Example:
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x80000000>;
+		numa-node-id = <0>;
+	};
+
+	memory@0x80000000 {
+		device_type = "memory";
+		reg = <0x0 0x80000000 0x0 0x80000000>;
+		numa-node-id = <1>;
+	};
+
+	/* Empty memory node */
+	memory@0x100000000 {
+		device_type = "memory";
+		reg = <0x1 0x0 0x0 0x0>;
+		numa-node-id = <2>;
+	};
+
+	/* Empty memory node */
+	memory@0x180000000 {
+		device_type = "memory";
+		reg = <0x1 0x80000000 0x0 0x0>;
+		numa-node-id = <3>;
+	};
+
+	distance-map {
+		compatible = "numa-distance-map-v1";
+		distance-matrix = <0 0  10>,
+				  <0 1  20>,
+				  <0 2  40>,
+				  <0 3  20>,
+				  <1 0  20>,
+				  <1 1  10>,
+				  <1 2  20>,
+				  <1 3  40>,
+				  <2 0  40>,
+				  <2 1  20>,
+				  <2 2  10>,
+				  <2 3  20>,
+				  <3 0  20>,
+				  <3 1  40>,
+				  <3 2  20>,
+				  <3 3  10>;
+	};
+
+==============================================================================
+5 - Example dts
 ==============================================================================
 
 Dual socket system consists of 2 boards connected through ccn bus and

Thanks,
Gavin

#5 lore raw
Quoted 45 lines · Gavin Shan
Quoted 31 lines · Andrew Jones
Quoted 30 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
  Documentation/devicetree/bindings/numa.txt | 4 ++++
  1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 113

Quoted 5 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
  Dual socket system consists of 2 boards connected through ccn bus and
  each board having one socket/soc of 8 cpus, memory and pci bus.
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

Quoted 12 lines
Quoted 5 lines

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 4 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Quoted 8 lines

Drew, thanks for your comments. Yeah, it sounds sensible to create a new section for it and an example would be more helpful. Please check if below changes are fine to you. I probably need Randy's review again.

I'm trying to avoid too many revisions for this sort of trivial patch, even though I already had. However, it's time frame for v5.14 and I'm pushing this to be merged during the cycle.

We must revise until we're satisfied... Also, I wouldn't call writing specifications trivial.

Documentation/devicetree/bindings/numa.txt Example: · line 105

Quoted 8 lines
Documentation/devicetree/bindings/numa.txt +1 -1
@@ -103,7 +103,65 @@ Example:
 		};
 ==============================================================================
-4 - Example dts
+4 - Empty memory node

nodes

Documentation/devicetree/bindings/numa.txt Example: · line 110

Quoted 4 lines
Documentation/devicetree/bindings/numa.txt +4 -0
+==============================================================================
+
+Empty memory nodes, which no memory resides in, are allowed. The 'length'
+field of 'reg' property is zero, but 'base-address' is dummy and invalid

is a dummy address and is invalid.

Documentation/devicetree/bindings/numa.txt Example: · line 110

Quoted 1 line
Documentation/devicetree/bindings/numa.txt +1 -0
+for these empty memory nodes.

Can drop this "for these empty memory nodes" that's clear from the context.

Quoted 2 lines

However, the NUMA node IDs and distance maps
+for them are still valid, but memory may be added into them through hotplug

^ drop 'for them' ^ Again, this should be "and". "but" is a
contrastive conjunction. We want to express that the nodes are valid *and* may have memory hotplugged later.

Quoted 1 line

+afterwards.

I'll just rewrite it:

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

Quoted 6 lines
Documentation/devicetree/bindings/numa.txt +6 -0
+
+Example:
+
+	memory@0 {
+		device_type = "memory";
+		reg = <0x0 0x0 0x0 0x80000000>;

Documentation/devicetree/bindings/numa.txt Example: · line 129

Quoted 10 lines
Documentation/devicetree/bindings/numa.txt +10 -0
+		numa-node-id = <0>;
+	};
+
+	memory@0x80000000 {
+		device_type = "memory";
+		reg = <0x0 0x80000000 0x0 0x80000000>;
+		numa-node-id = <1>;
+	};
+
+	/* Empty memory node */

You should write how you've selected the dummy addresses for the empty memory nodes, perhaps here in the /* Empty memory node */ comments or above in the paragraph or both.

Quoted 39 lines
Documentation/devicetree/bindings/numa.txt +35 -0
+	memory@0x100000000 {
+		device_type = "memory";
+		reg = <0x1 0x0 0x0 0x0>;
+		numa-node-id = <2>;
+	};
+
+	/* Empty memory node */
+	memory@0x180000000 {
+		device_type = "memory";
+		reg = <0x1 0x80000000 0x0 0x0>;
+		numa-node-id = <3>;
+	};
+
+	distance-map {
+		compatible = "numa-distance-map-v1";
+		distance-matrix = <0 0  10>,
+				  <0 1  20>,
+				  <0 2  40>,
+				  <0 3  20>,
+				  <1 0  20>,
+				  <1 1  10>,
+				  <1 2  20>,
+				  <1 3  40>,
+				  <2 0  40>,
+				  <2 1  20>,
+				  <2 2  10>,
+				  <2 3  20>,
+				  <3 0  20>,
+				  <3 1  40>,
+				  <3 2  20>,
+				  <3 3  10>;
+	};
+
+==============================================================================
+5 - Example dts
 ==============================================================================
 Dual socket system consists of 2 boards connected through ccn bus and
Quoted 4 lines

Thanks,
Gavin

Thanks,
drew

author
#6 lore raw
Quoted 58 lines · Andrew Jones
Quoted 45 lines · Gavin Shan
Quoted 31 lines · Andrew Jones
Quoted 30 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
   Documentation/devicetree/bindings/numa.txt | 4 ++++
   1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 113

Quoted 5 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
   Dual socket system consists of 2 boards connected through ccn bus and
   each board having one socket/soc of 8 cpus, memory and pci bus.
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

Quoted 12 lines
Quoted 5 lines

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 4 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Quoted 8 lines

Drew, thanks for your comments. Yeah, it sounds sensible to create a new section for it and an example would be more helpful. Please check if below changes are fine to you. I probably need Randy's review again.

I'm trying to avoid too many revisions for this sort of trivial patch, even though I already had. However, it's time frame for v5.14 and I'm pushing this to be merged during the cycle.

We must revise until we're satisfied... Also, I wouldn't call writing specifications trivial.

[...]

Quoted 7 lines

I'll just rewrite it:

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

[...]

Quoted 5 lines

You should write how you've selected the dummy addresses for the empty memory nodes, perhaps here in the /* Empty memory node */ comments or above in the paragraph or both.

Quoted 13 lines

Documentation/devicetree/bindings/numa.txt Example: · line 142

Quoted 13 lines
Documentation/devicetree/bindings/numa.txt +13 -0
+	memory@0x100000000 {
+		device_type = "memory";
+		reg = <0x1 0x0 0x0 0x0>;
+		numa-node-id = <2>;
+	};
+
+	/* Empty memory node */
+	memory@0x180000000 {
+		device_type = "memory";
+		reg = <0x1 0x80000000 0x0 0x0>;
+		numa-node-id = <3>;
+	};
+

[...]

Thanks, Drew. As 'base-address' is dummy address and invalid. So we would note it as suggestion. With your suggestion integrated, how about something like this?

==============================================================================
4 - Empty memory nodes
==============================================================================

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. The 'base-address' could be the summation of highest memory address plus the NUMA node ID. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

       :

       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
                numa-node-id = <0>;
        };

        memory@0x80000000 {
                device_type = "memory";
                reg = <0x0 0x80000000 0x0 0x80000000>;
                numa-node-id = <1>;
        };

        /* Empty memory node */
        memory@0x100000002 {
                device_type = "memory";
                reg = <0x1 0x2 0x0 0x0>;
                numa-node-id = <2>;
        };

        /* Empty memory node */
        memory@0x100000003 {
                device_type = "memory";
                reg = <0x1 0x3 0x0 0x0>;
                numa-node-id = <3>;
        };

        :

Thanks,
Gavin

#7 lore raw
Quoted 138 lines · Gavin Shan
Quoted 58 lines · Andrew Jones
Quoted 45 lines · Gavin Shan
Quoted 31 lines · Andrew Jones
Quoted 30 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
   Documentation/devicetree/bindings/numa.txt | 4 ++++
   1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 113

Quoted 5 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
   Dual socket system consists of 2 boards connected through ccn bus and
   each board having one socket/soc of 8 cpus, memory and pci bus.
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

Quoted 12 lines
Quoted 5 lines

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 4 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Quoted 8 lines

Drew, thanks for your comments. Yeah, it sounds sensible to create a new section for it and an example would be more helpful. Please check if below changes are fine to you. I probably need Randy's review again.

I'm trying to avoid too many revisions for this sort of trivial patch, even though I already had. However, it's time frame for v5.14 and I'm pushing this to be merged during the cycle.

We must revise until we're satisfied... Also, I wouldn't call writing specifications trivial.

[...]

Quoted 7 lines

I'll just rewrite it:

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

[...]

Quoted 5 lines

You should write how you've selected the dummy addresses for the empty memory nodes, perhaps here in the /* Empty memory node */ comments or above in the paragraph or both.

Quoted 13 lines

Documentation/devicetree/bindings/numa.txt Example: · line 142

Quoted 13 lines
Documentation/devicetree/bindings/numa.txt +13 -0
+	memory@0x100000000 {
+		device_type = "memory";
+		reg = <0x1 0x0 0x0 0x0>;
+		numa-node-id = <2>;
+	};
+
+	/* Empty memory node */
+	memory@0x180000000 {
+		device_type = "memory";
+		reg = <0x1 0x80000000 0x0 0x0>;
+		numa-node-id = <3>;
+	};
+

[...]

Thanks, Drew. As 'base-address' is dummy address and invalid. So we would note it as suggestion. With your suggestion integrated, how about something like this?

==============================================================================
4 - Empty memory nodes
==============================================================================

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. The 'base-address' could be the summation of highest memory address plus the NUMA node ID. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

       :

       memory@0 {
                device_type = "memory";
                reg = <0x0 0x0 0x0 0x80000000>;
                numa-node-id = <0>;
        };

        memory@0x80000000 {
                device_type = "memory";
                reg = <0x0 0x80000000 0x0 0x80000000>;
                numa-node-id = <1>;
        };

        /* Empty memory node */
        memory@0x100000002 {
                device_type = "memory";
                reg = <0x1 0x2 0x0 0x0>;
                numa-node-id = <2>;
        };

        /* Empty memory node */
        memory@0x100000003 {
                device_type = "memory";
                reg = <0x1 0x3 0x0 0x0>;
                numa-node-id = <3>;
        };

        :
Quoted 4 lines

Thanks,
Gavin

Looks good to me.

Thanks,
drew

author
#8 lore raw
Quoted 137 lines · Andrew Jones
Quoted 136 lines · Gavin Shan
Quoted 58 lines · Andrew Jones
Quoted 45 lines · Gavin Shan
Quoted 31 lines · Andrew Jones
Quoted 30 lines · Andrew Jones
Quoted 18 lines · Gavin Shan

The empty memory nodes, where no memory resides in, are allowed. For these empty memory nodes, the 'len' of 'reg' property is zero. The NUMA node IDs are still valid and parsed, but memory can be added to them through hotplug afterwards. I finds difficulty to get where it's properly documented.

So lets add note to empty memory nodes in the NUMA binding doc.

---
    Documentation/devicetree/bindings/numa.txt | 4 ++++
    1 file changed, 4 insertions(+)
Documentation/devicetree/bindings/numa.txt +0 -0
index 21b35053ca5a..0fc882e44270 100644

Documentation/devicetree/bindings/numa.txt Example: · line 113

Quoted 5 lines
Documentation/devicetree/bindings/numa.txt +3 -0
@@ -109,6 +109,10 @@ Example:
    Dual socket system consists of 2 boards connected through ccn bus and
    each board having one socket/soc of 8 cpus, memory and pci bus.
+Note that empty memory nodes, which no memory resides in, are allowed.
+The NUMA node IDs in these empty memory nodes are still valid, but
+memory can be added into them through hotplug afterwards.

Please change the second sentence to:

The NUMA node IDs in these empty memory nodes are still valid and memory may be added into them through hotplug afterwards.

Quoted 12 lines
Quoted 5 lines

But, this doesn't look like the right place for this paragraph. You're adding the paragraph to the example section, but the example doesn't have any empty memory nodes.

I think the paragraph should be added to section "2 - numa-node-id" and an

Or maybe even create a new section for it.

Quoted 4 lines

example empty memory node should be provided. Also, the commit message talks about the length of 'reg' being zero, which is an important distinction which should also be documented.

Quoted 8 lines

Drew, thanks for your comments. Yeah, it sounds sensible to create a new section for it and an example would be more helpful. Please check if below changes are fine to you. I probably need Randy's review again.

I'm trying to avoid too many revisions for this sort of trivial patch, even though I already had. However, it's time frame for v5.14 and I'm pushing this to be merged during the cycle.

We must revise until we're satisfied... Also, I wouldn't call writing specifications trivial.

[...]

Quoted 7 lines

I'll just rewrite it:

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

[...]

Quoted 5 lines

You should write how you've selected the dummy addresses for the empty memory nodes, perhaps here in the /* Empty memory node */ comments or above in the paragraph or both.

Quoted 13 lines

Documentation/devicetree/bindings/numa.txt Example: · line 142

Quoted 13 lines
Documentation/devicetree/bindings/numa.txt +13 -0
+	memory@0x100000000 {
+		device_type = "memory";
+		reg = <0x1 0x0 0x0 0x0>;
+		numa-node-id = <2>;
+	};
+
+	/* Empty memory node */
+	memory@0x180000000 {
+		device_type = "memory";
+		reg = <0x1 0x80000000 0x0 0x0>;
+		numa-node-id = <3>;
+	};
+

[...]

Thanks, Drew. As 'base-address' is dummy address and invalid. So we would note it as suggestion. With your suggestion integrated, how about something like this?

==============================================================================
4 - Empty memory nodes
==============================================================================

Empty memory nodes, which no memory resides in, are allowed. The 'length' field of the 'reg' property is zero, but the 'base-address' is a dummy address and invalid. The 'base-address' could be the summation of highest memory address plus the NUMA node ID. However, the NUMA node IDs and distance maps are still valid and memory may be added into them through hotplug afterwards.

        :

        memory@0 {
                 device_type = "memory";
                 reg = <0x0 0x0 0x0 0x80000000>;
                 numa-node-id = <0>;
         };

         memory@0x80000000 {
                 device_type = "memory";
                 reg = <0x0 0x80000000 0x0 0x80000000>;
                 numa-node-id = <1>;
         };

         /* Empty memory node */
         memory@0x100000002 {
                 device_type = "memory";
                 reg = <0x1 0x2 0x0 0x0>;
                 numa-node-id = <2>;
         };

         /* Empty memory node */
         memory@0x100000003 {
                 device_type = "memory";
                 reg = <0x1 0x3 0x0 0x0>;
                 numa-node-id = <3>;
         };
Quoted 9 lines
Quoted 6 lines
         :

Thanks,
Gavin

Looks good to me.

Thanks, Drew. v5 was posted to reflect changes, but I don't include Randy's r-b because too much changes introduced. Hopefully, Randy can take a look on v5 when getting a chance.

Thanks,
Gavin