Thread (22 messages) 22 messages, 6 authors, 2016-03-01

[PATCH v11 08/10] dt, numa: Add NUMA dt binding implementation.

From: robh@kernel.org (Rob Herring)
Date: 2016-03-01 17:44:11
Also in: linux-devicetree, linux-efi, lkml

On Tue, Mar 1, 2016 at 10:57 AM, David Daney [off-list ref] wrote:
On 03/01/2016 08:47 AM, Rob Herring wrote:
quoted
On Thu, Feb 25, 2016 at 7:26 PM, David Daney [off-list ref]
wrote:
quoted
On 02/23/2016 11:36 AM, Rob Herring wrote:
quoted

On Fri, Feb 19, 2016 at 05:13:17PM -0800, David Daney wrote:
quoted

From: Ganapatrao Kulkarni <redacted>

ADD device tree node parsing for NUMA topology using device
"numa-node-id" property distance-map.


I still want an adequate explanation why NUMA setup cannot be done with
an unflattened tree. PowerPC manages to do that and should have a
similar init flow being memblock based, so I would expect arm64 can too.


Many things could be done.  Really, we want to know what *should* be
done.

In the context of the current arm64 memory initialization we (more or
less)
do:

  1) early_init_fdt_scan_reserved_mem();
  2) memory_present()
  3) sparse_init()
  4) other things
  5) unflatten_device_tree()

We are already reading information out of the FDT at #1.

This patch set adds a step between 1 and 2 where we read NUMA information
out of the FDT.

The dependency on unflattening is that memblock is up and we can
allocate a chunk from it. Isn't that dependency met by step 1

No.
Really, because it seems that numa_alloc_distance is essentially doing
a memblock alloc and that happens before memory_present.
quoted
or is
there a dependency on sparsemem (or something else)?

Will Deacon talked about this over here:

https://lkml.org/lkml/2016/2/26/782
I'm not saying to move memblock setup earlier nor before the MMU is
on, so I don't see how Will's reply is relevant other than PPC doesn't
serve as an example. Maybe PPC should be ignored because I think maybe
NUMA is only used on non-FDT systems.

In any case, no one has clearly explained what the dependencies are or
what happens if you moved the unflattening up sooner. You told me what
the current order is which doesn't equate to dependencies. For
example, step 4 may or may not be a dependency of step 5. These are
the dependencies I'm aware of:

memblock dependent on DT memory and reserved-memory parsing
unflattening dependent on memblock_alloc()
sparsemem dependent on NUMA parsing and memblock

What am I missing from here?

Rob
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help