[U-Boot] /chosen node not overwritten by bootm
Jerry Van Baren
gerald.vanbaren at ge.com
Mon Oct 6 14:49:19 CEST 2008
Jerry Van Baren wrote:
> Stefan Roese wrote:
>> Hi Jerry,
>>
>> Again I (and Wolfgang) stumbled about the problem, that the /chosen node is
>> not overwritten by the bootm command when it already exists. This is really
>> annoying, since we either:
>>
>> a) Have to remove the chosen node from the dts files (which is not so easy
>> if we try to stay in sync with the kernel.org version)
>>
>> or
>>
>> b) Have to manually use the U-Boot "fdt" commands to overwrite the chosen node
>>
>> I can't remember why this current behavior is implemented this way. Jerry,
>> can't we just overwrite this node even if it already exists? What would we
>> loose by doing this?
>>
>> Thanks.
>>
>> Best regards,
>> Stefan
>
> Hi Stefan,
>
> The behavior was to mimic the behavior of the non-LIBFDT original
> implementation (and because we thought it was a good idea at the time).
> We originally assumed that the .dts file writer had more/better
> knowledge of the system than we did (which was true at the time). This
> was aggravated by the conundrum that the original FDT support didn't do
> a good job of generating the /chosen properties (some were, some
> weren't), so the .dts writers /had to/ pre-init some /chosen values.
> The /aliases node also helped - configuration choices that use to be
> implicit in the .dts /chosen node are now in /aliases (major improvement!).
>
> I thought we turned on the "force" flag so that the /chosen properties
> would be overwritten, apparently I'm mistaken.
>
> I'm fine with overwriting the /chosen node and properties. Generate a
> patch and I'll be happy to ack it.
>
> (Note to self: maybe it is time to retire the "force" flag - it always
> made me uncomfortable and is confusing. Is there anything left that we
> *don't* want to force?)
>
> Best regards,
> gvb
Hi Stefan, Wolfgang, Kumar,
I was messing with Kumar's bootm split-up changeset and it reminded me
of a major reason that I did not do a "force" on creating the /chosen
node: it was so that a FDT blob user could use "fdt chosen" to create
the /chosen node, post-modify it (which is what Kumar needs to do as I
understand it), and then run bootm. In this situation, bootm *won't*
touch /chosen and thus won't undo the extra modifications that the user
(boot script) did.
Question for Kumar: Am I understanding your problem correctly? Would
keeping the /chosen node generation unchanged (no "force") work for you
short term?
Long term I believe we want to eliminate the "force" parameter entirely
(disclaimer: I need to look at the impact) and want to break bootm up
into subcommand a'la Kumar's changeset.
Note to Stefan: I don't know how your boot script is set up, but if you
prefix it with "fdt rm /chosen", I think it will do what you want it to
do - remove legacy .dts generated /chosen nodes so it doesn't prevent
bootm/libfdt from generating the /chosen node. If the "/chosen" node
doesn't exist, it will print an error (I believe) but otherwise be OK.
Best regards,
gvb
More information about the U-Boot
mailing list