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

From: Will Deacon
Date: Fri Feb 26 2016 - 13:27:31 EST

On Thu, Feb 25, 2016 at 05:26:34PM -0800, David Daney wrote:
> On 02/23/2016 11:36 AM, Rob Herring wrote:
> >On Fri, Feb 19, 2016 at 05:13:17PM -0800, David Daney wrote:
> >>From: Ganapatrao Kulkarni <gkulkarni@xxxxxxxxxxxxxxxxxx>
> >>
> >>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.
> Hypothetically, it might be possible to rewrite the arm64 setup code so that
> the ordering was different, and the NUMA setup was done on the unflattened
> tree, but that would certainly be a much more invasive patch.

I just looked at what PPC get up to, and there's really not an obvious
way we could do that on arm64. They run whole swathes of the kernel
with the MMU off directly from head.S to parse the flattened tree and
get memblock up really early. On arm64, the head.S environment is
considerably more hostile, and I don't think we'd want to do that (not
to mention the interaction with EFI stub).

So I'm perfectly happy for this to operate on the flattened tree.