Re: [PATCH 1/2] of: create of_root if no dtb provided
From: Rob Herring
Date: Mon Jun 27 2022 - 14:00:01 EST
On Fri, Jun 24, 2022 at 11:44:07AM -0500, Frank Rowand wrote:
> On 6/24/22 08:13, Clément Léger wrote:
> > Le Thu, 23 Jun 2022 22:43:26 -0500,
> > frowand.list@xxxxxxxxx a écrit :
> >
> >>
> >> +/*
> >> + * __dtb_empty_root_begin[] magically created by cmd_dt_S_dtb in
> >> + * scripts/Makefile.lib
> >> + */
> >> +extern void *__dtb_empty_root_begin;
> >> +
> >> /*
> >> * of_fdt_limit_memory - limit the number of regions in the /memory node
> >> * @limit: maximum entries
> >> @@ -1332,8 +1338,13 @@ bool __init early_init_dt_scan(void *params)
> >> */
> >> void __init unflatten_device_tree(void)
> >> {
> >
> > Hi Frank,
> >
> > This function is only defined when CONFIG_OF_EARLY_FLATTREE is enabled.
>
> More precisely, only if CONFIG_OF_FLATTREE is enabled. But that would
> most likely be seleved by CONFIG_OF_EARLY_FLATTREE, so in practice the
> issue you raise is valid.
>
> > Which means that on platforms that do not select this, the default
> > empty device-tree creation will not be done.
>
> Yes, so platforms that need this functionality need to select this
> option.
>
> >
> > This configuration option is selected by the platform and not by the
> > user. On x86, only one config enables this (X86_INTEL_CE) which means
> > this won't work on all the other platforms even if CONFIG_OF is
> > selected. I would need this to work by only selected CONFIG_OF.
>
> Maybe this means that CONFIG_OF should be changed to select
> CONFIG_OF_FLATTREE. Any opinions on this Rob?
I don't think that works in the PDT (Sparc) case.
I think either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
to become user selectable.
>
> > That's why I decided to add the of_root creation in of_core_init()
> > using a function (of_fdt_unflatten()) that is provided if CONFIG_OF is
> > defined.
>
> I mentioned this in response to the previous patch series, but will
> repeat here for those who might not have read that email thread.
>
> I do not want the root live tree to be created buy different code in
> different places; I want one central place where this occurs. When
> the tree can be created in multiple places by different code blocks,
> it becomes more difficult to understand the code and more likely that
> one of the tree creation code blocks is not updated when another is.
+1
Rob