linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Frank Rowand <frowand.list@gmail.com>
To: "Clément Léger" <clement.leger@bootlin.com>
Cc: Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	Lizhi Hou <lizhi.hou@xilinx.com>,
	Allan Nielsen <allan.nielsen@microchip.com>,
	Horatiu Vultur <horatiu.vultur@microchip.com>,
	Steen Hegelund <steen.hegelund@microchip.com>,
	Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Subject: Re: [PATCH 1/2] of: create of_root if no dtb provided
Date: Fri, 24 Jun 2022 11:44:07 -0500	[thread overview]
Message-ID: <6d40876c-2751-01bb-94ab-7c9ab90e636f@gmail.com> (raw)
In-Reply-To: <20220624141320.3c473605@fixe.home>

On 6/24/22 08:13, Clément Léger wrote:
> Le Thu, 23 Jun 2022 22:43:26 -0500,
> frowand.list@gmail.com 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


  reply	other threads:[~2022-06-24 16:44 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-24  3:43 [PATCH 0/2] of: populate of_root_node if not set (alternate) frowand.list
2022-06-24  3:43 ` [PATCH 1/2] of: create of_root if no dtb provided frowand.list
2022-06-24 12:13   ` Clément Léger
2022-06-24 16:44     ` Frank Rowand [this message]
2022-06-27  9:11       ` Clément Léger
2022-06-27 17:59       ` Rob Herring
2022-10-11  7:26       ` Clément Léger
2023-01-09  8:40         ` Clément Léger
2023-01-10  6:27           ` Frank Rowand
2023-01-10  8:12             ` Clément Léger
2023-01-24 14:34               ` Frank Rowand
2023-02-20 11:15                 ` Clément Léger
2023-02-20 18:51                   ` Frank Rowand
2022-06-24  3:43 ` [PATCH 2/2] of: unittest: treat missing of_root as error instead of fixing up frowand.list
2022-06-28 14:36   ` Rob Herring
2022-06-28 19:34     ` Frank Rowand
2023-02-22  3:54 [PATCH 0/2] of: populate of_root_node if not set (alternate) Frank Rowand
2023-02-22  3:54 ` [PATCH 1/2] of: create of_root if no dtb provided Frank Rowand

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6d40876c-2751-01bb-94ab-7c9ab90e636f@gmail.com \
    --to=frowand.list@gmail.com \
    --cc=allan.nielsen@microchip.com \
    --cc=clement.leger@bootlin.com \
    --cc=devicetree@vger.kernel.org \
    --cc=horatiu.vultur@microchip.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizhi.hou@xilinx.com \
    --cc=robh+dt@kernel.org \
    --cc=steen.hegelund@microchip.com \
    --cc=thomas.petazzoni@bootlin.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).