Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 10/06/2017 06:11 AM, Sascha Hauer wrote:
Hi Marcel,

On Tue, Oct 03, 2017 at 11:36:49AM +0200, Marcel Hamer wrote:
Hello,

When passing a custom device tree to the kernel using the 'bootm' command I
see the device tree gets 'fixed up' when the CONFIG_OFDEVICE option is
enabled. Probably this should not be the case when the dtb is passed to the
kernel?

This happens on line common/bootm.c:395:

     oftree = of_get_fixed_tree(data->of_root_node);

Should this not be changed to:

     oftree = of_flatten_db(data->of_root_node);
No. Getting the fixed up tree is exactly what we want here. There are
some cases in which it's absolutely mandatory to use the fixed tree
(memory banks, they are oftem empty in the Linux provided dts files)
and other in which is convenient (mtd, to make sure the kernel sees the
same partitions as the bootloader).
There might be some cases where we want to have more control over which
fixups run and which don't, but generally we want to have the fixed tree
here.

Sascha

Ok, I kind of get the reasoning behind the fixing up, but I don't think it is very welcome in all situations. Not considering the '/chosen' node, because I can see that is a requirement to be added to the dtb.

When I specifically specify a custom dtb to be used for the Linux kernel I would not prefer the boot loader to modify it. If there should be a system to fix it up it should be the kernel in this case, at least in my opinion.

It kind of sounds like the boot loader is deciding it is smarter than the developer and overriding the settings in the dtb before it passes it to the kernel. I also see it as kind of strange, when you configure a partition table in your dtb for the kernel and once you boot the kernel you get the partition table from the boot loader. Especially since I don't think this is documented anywhere, at least not in the bootm command documentation as far as I know.

When you want to update your dtb in the future, for whatever reason, this also becomes an issue. For instance if you would want to add a label to your mtd partition, then you would have to update your boot loader to get it into the kernel. Or maybe you want part of the partitions configurable depending on the system configuration. In this case this would no longer be possible, because the boot loader overrides it by default.

Would it be an option to make the fixing up configurable by a configuration setting for the bootm command?

Kind regards,

Marcel


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox




[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux