* Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled @ 2017-10-03 9:36 Marcel Hamer 2017-10-06 4:11 ` Sascha Hauer 0 siblings, 1 reply; 7+ messages in thread From: Marcel Hamer @ 2017-10-03 9:36 UTC (permalink / raw) To: barebox 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); Kind regards, Marcel _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-03 9:36 Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled Marcel Hamer @ 2017-10-06 4:11 ` Sascha Hauer 2017-10-06 7:45 ` Marcel Hamer 0 siblings, 1 reply; 7+ messages in thread From: Sascha Hauer @ 2017-10-06 4:11 UTC (permalink / raw) To: Marcel Hamer; +Cc: barebox 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 -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-06 4:11 ` Sascha Hauer @ 2017-10-06 7:45 ` Marcel Hamer 2017-10-06 9:55 ` Ian Abbott 0 siblings, 1 reply; 7+ messages in thread From: Marcel Hamer @ 2017-10-06 7:45 UTC (permalink / raw) To: Sascha Hauer; +Cc: barebox 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@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-06 7:45 ` Marcel Hamer @ 2017-10-06 9:55 ` Ian Abbott 2017-10-06 10:28 ` Marcel Hamer 0 siblings, 1 reply; 7+ messages in thread From: Ian Abbott @ 2017-10-06 9:55 UTC (permalink / raw) To: Marcel Hamer, Sascha Hauer; +Cc: barebox On 06/10/17 08:45, Marcel Hamer wrote: > 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. There is a magic variable setting to leave the partition entries alone: global.of_partition_binding="donttouch" (Other meaningful values for this variable are "new" and "legacy", which controls whether the individual partitions are placed within a "partitions" node ("new") or not ("legacy").) -- -=( Ian Abbott @ MEV Ltd. E-mail: <abbotti@mev.co.uk> )=- -=( Web: http://www.mev.co.uk/ )=- _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-06 9:55 ` Ian Abbott @ 2017-10-06 10:28 ` Marcel Hamer 2017-10-06 11:04 ` gianluca 0 siblings, 1 reply; 7+ messages in thread From: Marcel Hamer @ 2017-10-06 10:28 UTC (permalink / raw) To: Ian Abbott, Sascha Hauer; +Cc: barebox Hello Ian, On 10/06/2017 11:55 AM, Ian Abbott wrote: > On 06/10/17 08:45, Marcel Hamer wrote: >> 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. > > There is a magic variable setting to leave the partition entries alone: > > global.of_partition_binding="donttouch" > > (Other meaningful values for this variable are "new" and "legacy", > which controls whether the individual partitions are placed within a > "partitions" node ("new") or not ("legacy").) > Thank you for pointing that option out, I will certainly have a look at that. I took the partitioning as an example, because it gave me the biggest burden. But I guess in general I think the principle of fixing up the kernel device tree should be optional to my opinion. Kind regards, Marcel _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-06 10:28 ` Marcel Hamer @ 2017-10-06 11:04 ` gianluca 2017-10-06 12:00 ` Marcel Hamer 0 siblings, 1 reply; 7+ messages in thread From: gianluca @ 2017-10-06 11:04 UTC (permalink / raw) To: barebox On 10/06/2017 12:28 PM, Marcel Hamer wrote: > Hello Ian, > >> There is a magic variable setting to leave the partition entries alone: >> >> global.of_partition_binding="donttouch" >> >> (Other meaningful values for this variable are "new" and "legacy", >> which controls whether the individual partitions are placed within a >> "partitions" node ("new") or not ("legacy").) >> > > Thank you for pointing that option out, I will certainly have a look at > that. > > I took the partitioning as an example, because it gave me the biggest > burden. But I guess in general I think the principle of fixing up the > kernel device tree should be optional to my opinion. > IMHO you Marcel, are missing the point. Do not changing device tree and passing it as-is to the kernel has the reason on systems non upgradable, non changeable during their life-time. i.e. routers and or smartphones. Usually they are provided with all stuff attached and normally everyting is working out-of-the-box. To my experience, we have a bunch of boards, and they are different each other by little stuff, such as number of uarts, gpios, screens/lcd, memory and storage size. I am letting BareBox to adapt a "generic-all-inclusive" device-tree with the correct "device-tree" to the kernel, so it can be used without hassle having and managing a single device-tree in our develpement studio. It is simpler to have a single device-tree which can be used over a plethora of boards based on the same root-hardware, than having a plethora of device-trees perfectly adapted with your plethora of devices. Do you agree? Regards, Gianluca -- Eurek s.r.l. | Electronic Engineering | http://www.eurek.it via Celletta 8/B, 40026 Imola, Italy | Phone: +39-(0)542-609120 p.iva 00690621206 - c.f. 04020030377 | Fax: +39-(0)542-609212 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled 2017-10-06 11:04 ` gianluca @ 2017-10-06 12:00 ` Marcel Hamer 0 siblings, 0 replies; 7+ messages in thread From: Marcel Hamer @ 2017-10-06 12:00 UTC (permalink / raw) To: gianluca, barebox Hello, On 10/06/2017 01:04 PM, gianluca wrote: > On 10/06/2017 12:28 PM, Marcel Hamer wrote: >> Hello Ian, >> >>> There is a magic variable setting to leave the partition entries alone: >>> >>> global.of_partition_binding="donttouch" >>> >>> (Other meaningful values for this variable are "new" and "legacy", >>> which controls whether the individual partitions are placed within a >>> "partitions" node ("new") or not ("legacy").) >>> >> >> Thank you for pointing that option out, I will certainly have a look at >> that. >> >> I took the partitioning as an example, because it gave me the biggest >> burden. But I guess in general I think the principle of fixing up the >> kernel device tree should be optional to my opinion. >> > > IMHO you Marcel, are missing the point. > > Do not changing device tree and passing it as-is to the kernel has the > reason on systems non upgradable, non changeable during their > life-time. i.e. routers and or smartphones. > > Usually they are provided with all stuff attached and normally > everyting is working out-of-the-box. > > To my experience, we have a bunch of boards, and they are different > each other by little stuff, such as number of uarts, gpios, > screens/lcd, memory and storage size. > > I am letting BareBox to adapt a "generic-all-inclusive" device-tree > with the correct "device-tree" to the kernel, so it can be used > without hassle having and managing a single device-tree in our > develpement studio. > > It is simpler to have a single device-tree which can be used over a > plethora of boards based on the same root-hardware, than having a > plethora of device-trees perfectly adapted with your plethora of devices. > > Do you agree? > > Regards, > Gianluca But that is more a matter of how you decide to manage your device trees in your development process, right? You can do that in many ways and you have the freedom of choice there, I don't directly see the relation to my question to be honest. It is not a matter of what devices are covered in the device tree. With systems that have root file systems and Linux kernels that can be updated, for instance in a Rauc kind of setup, you want to be able to control your dtb as well. What if you upgrade to a Linux kernel version that has incompatible changes in some areas, you might in theory end up to be forced to update your boot loader as well? I would prefer to be able to update my kernel dtb independent of the boot loader, because I can do that redundantly. And in that case I don't want to be dependent on the boot loader source code. Kind regards, Marcel _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-10-06 12:00 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-10-03 9:36 Kernel device tree gets modified with bootm command when CONFIG_OFDEVICE is enabled Marcel Hamer 2017-10-06 4:11 ` Sascha Hauer 2017-10-06 7:45 ` Marcel Hamer 2017-10-06 9:55 ` Ian Abbott 2017-10-06 10:28 ` Marcel Hamer 2017-10-06 11:04 ` gianluca 2017-10-06 12:00 ` Marcel Hamer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox