2022-06-24 03:54:42

by Frank Rowand

[permalink] [raw]
Subject: [PATCH 1/2] of: create of_root if no dtb provided

From: Frank Rowand <[email protected]>

When enabling CONFIG_OF on a platform where of_root is not populated by
firmware, we end up without a root node. In order to apply overlays and
create subnodes of the root node, we need one. Create this root node
by unflattening an empty builtin dtb.

If firmware provides a flattened device tree (FDT) then the FDT is
unflattened via setup_arch(). setup_of() is called immediately
after setup_arch(), and will create the default root node if it
does not exist.

Signed-off-by: Frank Rowand <[email protected]>
---

This patch modifies init/main.c. It was not clear to me whether
to add Linus to the distribution, or if the change should flow
through Rob. (I did not add Linus.)

drivers/of/Makefile | 2 +-
drivers/of/fdt.c | 19 ++++++++++++++++++-
include/linux/of_fdt.h | 2 ++
init/main.c | 2 ++
4 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/drivers/of/Makefile b/drivers/of/Makefile
index e0360a44306e..cbae92c5ed02 100644
--- a/drivers/of/Makefile
+++ b/drivers/of/Makefile
@@ -2,7 +2,7 @@
obj-y = base.o device.o platform.o property.o
obj-$(CONFIG_OF_KOBJ) += kobj.o
obj-$(CONFIG_OF_DYNAMIC) += dynamic.o
-obj-$(CONFIG_OF_FLATTREE) += fdt.o
+obj-$(CONFIG_OF_FLATTREE) += fdt.o empty_root.dtb.o
obj-$(CONFIG_OF_EARLY_FLATTREE) += fdt_address.o
obj-$(CONFIG_OF_PROMTREE) += pdt.o
obj-$(CONFIG_OF_ADDRESS) += address.o
diff --git a/drivers/of/fdt.c b/drivers/of/fdt.c
index a8f5b6532165..d439ded3b6c6 100644
--- a/drivers/of/fdt.c
+++ b/drivers/of/fdt.c
@@ -33,6 +33,12 @@

#include "of_private.h"

+/*
+ * __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)
{
- __unflatten_device_tree(initial_boot_params, NULL, &of_root,
+ if (!initial_boot_params) {
+ initial_boot_params = (void *) __dtb_empty_root_begin;
+ unflatten_and_copy_device_tree();
+ } else {
+ __unflatten_device_tree(initial_boot_params, NULL, &of_root,
early_init_dt_alloc_memory_arch, false);
+ }

/* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */
of_alias_scan(early_init_dt_alloc_memory_arch);
@@ -1373,6 +1384,12 @@ void __init unflatten_and_copy_device_tree(void)
unflatten_device_tree();
}

+void __init setup_of(void)
+{
+ if (!of_root)
+ unflatten_device_tree();
+}
+
#ifdef CONFIG_SYSFS
static ssize_t of_fdt_raw_read(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr,
diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
index d69ad5bb1eb1..4566876db351 100644
--- a/include/linux/of_fdt.h
+++ b/include/linux/of_fdt.h
@@ -81,6 +81,7 @@ extern const void *of_flat_dt_match_machine(const void *default_match,
/* Other Prototypes */
extern void unflatten_device_tree(void);
extern void unflatten_and_copy_device_tree(void);
+extern void setup_of(void);
extern void early_init_devtree(void *);
extern void early_get_first_memblock_info(void *, phys_addr_t *);
#else /* CONFIG_OF_EARLY_FLATTREE */
@@ -91,6 +92,7 @@ static inline void early_init_fdt_reserve_self(void) {}
static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }
static inline void unflatten_device_tree(void) {}
static inline void unflatten_and_copy_device_tree(void) {}
+static inline void of_setup(void) {}
#endif /* CONFIG_OF_EARLY_FLATTREE */

#endif /* __ASSEMBLY__ */
diff --git a/init/main.c b/init/main.c
index 0ee39cdcfcac..8b3a60d14bea 100644
--- a/init/main.c
+++ b/init/main.c
@@ -99,6 +99,7 @@
#include <linux/kcsan.h>
#include <linux/init_syscalls.h>
#include <linux/stackdepot.h>
+#include <linux/of_fdt.h>
#include <net/net_namespace.h>

#include <asm/io.h>
@@ -949,6 +950,7 @@ asmlinkage __visible void __init __no_sanitize_address start_kernel(void)
pr_notice("%s", linux_banner);
early_security_init();
setup_arch(&command_line);
+ setup_of();
setup_boot_config();
setup_command_line(command_line);
setup_nr_cpu_ids();
--
Frank Rowand <[email protected]>


2022-06-24 12:18:00

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Thu, 23 Jun 2022 22:43:26 -0500,
[email protected] 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.
Which means that on platforms that do not select this, the default
empty device-tree creation will not be done.

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.
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.

> - __unflatten_device_tree(initial_boot_params, NULL, &of_root,
> + if (!initial_boot_params) {
> + initial_boot_params = (void *) __dtb_empty_root_begin;
> + unflatten_and_copy_device_tree();
> + } else {
> + __unflatten_device_tree(initial_boot_params, NULL, &of_root,
> early_init_dt_alloc_memory_arch, false);
> + }
>
> /* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */
> of_alias_scan(early_init_dt_alloc_memory_arch);
> @@ -1373,6 +1384,12 @@ void __init unflatten_and_copy_device_tree(void)
> unflatten_device_tree();
> }
>
> +void __init setup_of(void)
> +{
> + if (!of_root)
> + unflatten_device_tree();
> +}
> +
> #ifdef CONFIG_SYSFS
> static ssize_t of_fdt_raw_read(struct file *filp, struct kobject *kobj,
> struct bin_attribute *bin_attr,
> diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
> index d69ad5bb1eb1..4566876db351 100644
> --- a/include/linux/of_fdt.h
> +++ b/include/linux/of_fdt.h
> @@ -81,6 +81,7 @@ extern const void *of_flat_dt_match_machine(const void *default_match,
> /* Other Prototypes */
> extern void unflatten_device_tree(void);
> extern void unflatten_and_copy_device_tree(void);
> +extern void setup_of(void);
> extern void early_init_devtree(void *);
> extern void early_get_first_memblock_info(void *, phys_addr_t *);
> #else /* CONFIG_OF_EARLY_FLATTREE */
> @@ -91,6 +92,7 @@ static inline void early_init_fdt_reserve_self(void) {}
> static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }
> static inline void unflatten_device_tree(void) {}
> static inline void unflatten_and_copy_device_tree(void) {}
> +static inline void of_setup(void) {}

Shouldn't this be setup_of(void) ?

--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2022-06-24 17:18:34

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

On 6/24/22 08:13, Clément Léger wrote:
> Le Thu, 23 Jun 2022 22:43:26 -0500,
> [email protected] 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?

> 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.

>
>> - __unflatten_device_tree(initial_boot_params, NULL, &of_root,
>> + if (!initial_boot_params) {
>> + initial_boot_params = (void *) __dtb_empty_root_begin;
>> + unflatten_and_copy_device_tree();
>> + } else {
>> + __unflatten_device_tree(initial_boot_params, NULL, &of_root,
>> early_init_dt_alloc_memory_arch, false);
>> + }
>>
>> /* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */
>> of_alias_scan(early_init_dt_alloc_memory_arch);
>> @@ -1373,6 +1384,12 @@ void __init unflatten_and_copy_device_tree(void)
>> unflatten_device_tree();
>> }
>>
>> +void __init setup_of(void)
>> +{
>> + if (!of_root)
>> + unflatten_device_tree();
>> +}
>> +
>> #ifdef CONFIG_SYSFS
>> static ssize_t of_fdt_raw_read(struct file *filp, struct kobject *kobj,
>> struct bin_attribute *bin_attr,
>> diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
>> index d69ad5bb1eb1..4566876db351 100644
>> --- a/include/linux/of_fdt.h
>> +++ b/include/linux/of_fdt.h
>> @@ -81,6 +81,7 @@ extern const void *of_flat_dt_match_machine(const void *default_match,
>> /* Other Prototypes */
>> extern void unflatten_device_tree(void);
>> extern void unflatten_and_copy_device_tree(void);
>> +extern void setup_of(void);
>> extern void early_init_devtree(void *);
>> extern void early_get_first_memblock_info(void *, phys_addr_t *);
>> #else /* CONFIG_OF_EARLY_FLATTREE */
>> @@ -91,6 +92,7 @@ static inline void early_init_fdt_reserve_self(void) {}
>> static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }
>> static inline void unflatten_device_tree(void) {}
>> static inline void unflatten_and_copy_device_tree(void) {}
>> +static inline void of_setup(void) {}
>

> Shouldn't this be setup_of(void) ?

Yes, thanks! Will fix.

One other thing I need to do is test this patch on a user mode linux
kernel.

-Frank

2022-06-27 09:48:23

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Fri, 24 Jun 2022 11:44:07 -0500,
Frank Rowand <[email protected]> a écrit :

> On 6/24/22 08:13, Clément Léger wrote:
> > Le Thu, 23 Jun 2022 22:43:26 -0500,
> > [email protected] 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.

Yes, but this seems a bit odd because this is not really a early
flattree that is provided by the firmware. This simply allows to have a
working support for overlays (As a "side effect" I agree).

>
> >
> > 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?
>
> > 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.

Understood, my point was more about the fact that I did not wanted to
select CONFIG_OF_FLATTREE to be able to use that support which does not
seems entirely tied to having a "early flattree".

Thanks,

Clément

>
> >
> >> - __unflatten_device_tree(initial_boot_params, NULL, &of_root,
> >> + if (!initial_boot_params) {
> >> + initial_boot_params = (void *) __dtb_empty_root_begin;
> >> + unflatten_and_copy_device_tree();
> >> + } else {
> >> + __unflatten_device_tree(initial_boot_params, NULL, &of_root,
> >> early_init_dt_alloc_memory_arch, false);
> >> + }
> >>
> >> /* Get pointer to "/chosen" and "/aliases" nodes for use everywhere */
> >> of_alias_scan(early_init_dt_alloc_memory_arch);
> >> @@ -1373,6 +1384,12 @@ void __init unflatten_and_copy_device_tree(void)
> >> unflatten_device_tree();
> >> }
> >>
> >> +void __init setup_of(void)
> >> +{
> >> + if (!of_root)
> >> + unflatten_device_tree();
> >> +}
> >> +
> >> #ifdef CONFIG_SYSFS
> >> static ssize_t of_fdt_raw_read(struct file *filp, struct kobject *kobj,
> >> struct bin_attribute *bin_attr,
> >> diff --git a/include/linux/of_fdt.h b/include/linux/of_fdt.h
> >> index d69ad5bb1eb1..4566876db351 100644
> >> --- a/include/linux/of_fdt.h
> >> +++ b/include/linux/of_fdt.h
> >> @@ -81,6 +81,7 @@ extern const void *of_flat_dt_match_machine(const void *default_match,
> >> /* Other Prototypes */
> >> extern void unflatten_device_tree(void);
> >> extern void unflatten_and_copy_device_tree(void);
> >> +extern void setup_of(void);
> >> extern void early_init_devtree(void *);
> >> extern void early_get_first_memblock_info(void *, phys_addr_t *);
> >> #else /* CONFIG_OF_EARLY_FLATTREE */
> >> @@ -91,6 +92,7 @@ static inline void early_init_fdt_reserve_self(void) {}
> >> static inline const char *of_flat_dt_get_machine_name(void) { return NULL; }
> >> static inline void unflatten_device_tree(void) {}
> >> static inline void unflatten_and_copy_device_tree(void) {}
> >> +static inline void of_setup(void) {}
> >
>
> > Shouldn't this be setup_of(void) ?
>
> Yes, thanks! Will fix.
>
> One other thing I need to do is test this patch on a user mode linux
> kernel.
>
> -Frank
>



--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2022-06-27 18:57:56

by Rob Herring (Arm)

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

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,
> > [email protected] 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

2022-10-11 08:07:43

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Fri, 24 Jun 2022 11:44:07 -0500,
Frank Rowand <[email protected]> a écrit :

> On 6/24/22 08:13, Clément Léger wrote:
> > Le Thu, 23 Jun 2022 22:43:26 -0500,
> > [email protected] 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)
> >> {
> >


Any news on this series ?

--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2023-01-09 09:20:57

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Tue, 11 Oct 2022 09:26:54 +0200,
Clément Léger <[email protected]> a écrit :

> Le Fri, 24 Jun 2022 11:44:07 -0500,
> Frank Rowand <[email protected]> a écrit :
>
> > On 6/24/22 08:13, Clément Léger wrote:
> > > Le Thu, 23 Jun 2022 22:43:26 -0500,
> > > [email protected] 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)
> > >> {
> > >
>
>
> Any news on this series ?
>

Hi Frank,

Do you plan on resubmitting this series ? If not, could I resubmit it
after fixing problems that were raised in the review ?

Thanks,

--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2023-01-10 06:49:27

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

On 1/9/23 02:40, Clément Léger wrote:
> Le Tue, 11 Oct 2022 09:26:54 +0200,
> Clément Léger <[email protected]> a écrit :
>
>> Le Fri, 24 Jun 2022 11:44:07 -0500,
>> Frank Rowand <[email protected]> a écrit :
>>
>>> On 6/24/22 08:13, Clément Léger wrote:
>>>> Le Thu, 23 Jun 2022 22:43:26 -0500,
>>>> [email protected] 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)
>>>>> {
>>>>
>>
>>
>> Any news on this series ?
>>
>
> Hi Frank,
>
> Do you plan on resubmitting this series ? If not, could I resubmit it
> after fixing problems that were raised in the review ?
>> Thanks,
>

Thanks for the prod. I'll re-spin it.

If I properly captured all the comments, I'll have to implement
Rob's suggestion:

"either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
to become user selectable."

-Frank

2023-01-10 08:33:30

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Tue, 10 Jan 2023 00:27:16 -0600,
Frank Rowand <[email protected]> a écrit :

> On 1/9/23 02:40, Clément Léger wrote:
> > Le Tue, 11 Oct 2022 09:26:54 +0200,
> > Clément Léger <[email protected]> a écrit :
> >
> >> Le Fri, 24 Jun 2022 11:44:07 -0500,
> >> Frank Rowand <[email protected]> a écrit :
> >>
> >>> On 6/24/22 08:13, Clément Léger wrote:
> >>>> Le Thu, 23 Jun 2022 22:43:26 -0500,
> >>>> [email protected] 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)
> >>>>> {
> >>>>
> >>
> >>
> >> Any news on this series ?
> >>
> >
> > Hi Frank,
> >
> > Do you plan on resubmitting this series ? If not, could I resubmit it
> > after fixing problems that were raised in the review ?
> >> Thanks,
> >
>
> Thanks for the prod. I'll re-spin it.

Ok great, thanks Frank.

>
> If I properly captured all the comments, I'll have to implement
> Rob's suggestion:
>
> "either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
> to become user selectable."

>
> -Frank



--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2023-01-24 14:35:08

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

On 1/10/23 02:12, Clément Léger wrote:
> Le Tue, 10 Jan 2023 00:27:16 -0600,
> Frank Rowand <[email protected]> a écrit :
>
>> On 1/9/23 02:40, Clément Léger wrote:
>>> Le Tue, 11 Oct 2022 09:26:54 +0200,
>>> Clément Léger <[email protected]> a écrit :
>>>
>>>> Le Fri, 24 Jun 2022 11:44:07 -0500,
>>>> Frank Rowand <[email protected]> a écrit :

< snip >

>>>> Any news on this series ?
>>>>
>>>
>>> Hi Frank,
>>>
>>> Do you plan on resubmitting this series ? If not, could I resubmit it
>>> after fixing problems that were raised in the review ?
>>>> Thanks,
>>>
>>
>> Thanks for the prod. I'll re-spin it.
>
> Ok great, thanks Frank.

My apologies, I haven't done this yet and I'm going on vacation for a week or so.
I'll get back to this.

This is one of the three items at the top of my devicetree todo list (along with
Lizhi Hou's "Generate device tree node for pci devices" patch series).

-Frank

>>
>> If I properly captured all the comments, I'll have to implement
>> Rob's suggestion:
>>
>> "either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
>> to become user selectable."
>
>>
>> -Frank
>
>
>


2023-02-20 11:13:13

by Clément Léger

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

Le Tue, 24 Jan 2023 08:34:53 -0600,
Frank Rowand <[email protected]> a écrit :

> On 1/10/23 02:12, Clément Léger wrote:
> > Le Tue, 10 Jan 2023 00:27:16 -0600,
> > Frank Rowand <[email protected]> a écrit :
> >
> >> On 1/9/23 02:40, Clément Léger wrote:
> >>> Le Tue, 11 Oct 2022 09:26:54 +0200,
> >>> Clément Léger <[email protected]> a écrit :
> >>>
> >>>> Le Fri, 24 Jun 2022 11:44:07 -0500,
> >>>> Frank Rowand <[email protected]> a écrit :
>
> < snip >
>
> >>>> Any news on this series ?
> >>>>
> >>>
> >>> Hi Frank,
> >>>
> >>> Do you plan on resubmitting this series ? If not, could I resubmit it
> >>> after fixing problems that were raised in the review ?
> >>>> Thanks,
> >>>
> >>
> >> Thanks for the prod. I'll re-spin it.
> >
> > Ok great, thanks Frank.
>
> My apologies, I haven't done this yet and I'm going on vacation for a week or so.
> I'll get back to this.

Hi Frank, any news on this ? I'm asking again, but if you do not have
time for this, do you mind if I re-spin your series ? This item is
important for us.

Thanks,

Clément

>
> This is one of the three items at the top of my devicetree todo list (along with
> Lizhi Hou's "Generate device tree node for pci devices" patch series).
>
> -Frank
>
> >>
> >> If I properly captured all the comments, I'll have to implement
> >> Rob's suggestion:
> >>
> >> "either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
> >> to become user selectable."
> >
> >>
> >> -Frank
> >
> >
> >
>



--
Clément Léger,
Embedded Linux and Kernel engineer at Bootlin
https://bootlin.com

2023-02-20 18:53:07

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided

On 2/20/23 05:15, Clément Léger wrote:
> Le Tue, 24 Jan 2023 08:34:53 -0600,
> Frank Rowand <[email protected]> a écrit :
>
>> On 1/10/23 02:12, Clément Léger wrote:
>>> Le Tue, 10 Jan 2023 00:27:16 -0600,
>>> Frank Rowand <[email protected]> a écrit :
>>>
>>>> On 1/9/23 02:40, Clément Léger wrote:
>>>>> Le Tue, 11 Oct 2022 09:26:54 +0200,
>>>>> Clément Léger <[email protected]> a écrit :
>>>>>
>>>>>> Le Fri, 24 Jun 2022 11:44:07 -0500,
>>>>>> Frank Rowand <[email protected]> a écrit :
>>
>> < snip >
>>
>>>>>> Any news on this series ?
>>>>>>
>>>>>
>>>>> Hi Frank,
>>>>>
>>>>> Do you plan on resubmitting this series ? If not, could I resubmit it
>>>>> after fixing problems that were raised in the review ?
>>>>>> Thanks,
>>>>>
>>>>
>>>> Thanks for the prod. I'll re-spin it.
>>>
>>> Ok great, thanks Frank.
>>
>> My apologies, I haven't done this yet and I'm going on vacation for a week or so.
>> I'll get back to this.
>
> Hi Frank, any news on this ? I'm asking again, but if you do not have
> time for this, do you mind if I re-spin your series ? This item is
> important for us.

No problem with asking again.

I am actively working on this. Almost finished.

-Frank

>
> Thanks,
>
> Clément
>
>>
>> This is one of the three items at the top of my devicetree todo list (along with
>> Lizhi Hou's "Generate device tree node for pci devices" patch series).
>>
>> -Frank
>>
>>>>
>>>> If I properly captured all the comments, I'll have to implement
>>>> Rob's suggestion:
>>>>
>>>> "either CONFIG_OF_FLATTREE or CONFIG_OF_EARLY_FLATTREE will need
>>>> to become user selectable."
>>>
>>>>
>>>> -Frank
>>>
>>>
>>>
>>
>
>
>