Subject: Re: removing get_immrbase()??

From: Scott Wood <[email-masked]>
Date: Wed, 22 Apr 2009 17:33:52 -0500

Kumar Gala wrote:
> On Apr 22, 2009, at 4:38 PM, Scott Wood wrote:
>> Kumar Gala wrote:
>>> I disagree.  If you update your kernel you should update your device 
>>> tree (thus we have .dts in the kernel tree and not somewhere else).
>>
>> No.  The device tree is a means to pass information from the firmware 
>> to the kernel.  It is part of the firmware.  That the repository of 
>> trees is in the Linux kernel for any boards which are not including 
>> the tree inside a bootwrapper is a historical accident.
> 
> I think its a point of view argument.

I don't.  It is the responsibility of u-boot to produce a complete 
device tree; what bits are in the dts and what bits are programatically 
generated is an internal implementation detail.  We are currently 
hosting some parts of that implementation detail in the Linux tree, but 
it is still a u-boot implementation detail.  U-boot is perfectly within 
its rights to generate the entire tree from scratch if it wanted to.

Just a few hours ago you were telling me that you didn't want to put
accurate information in the device tree because you wanted u-boot to 
generate it instead. :-)

The reason we have standards such as ePAPR in the first place is so that 
we are dealing with well-defined interfaces that can be used even when 
the firmware is not U-Boot at all (but merely something that is 
standards-compliant) and/or the kernel is not Linux at all (but merely 
something that is standards-compliant).  The downside to that is that 
revising standards is a bit more of a pain than revising code.  We can 
do it if it's worthwhile, but we should try to avoid doing it gratuitously.

> I don't agree its part of the 
> firmware, at least not part of the firmware we use (u-boot).

We have had many instances of certain versions of device trees being 
incompatible with certain versions of u-boot.

All I'm asking is that we treat a mandatory dts upgrade as seriously as 
a mandatory firmware upgrade.

>> Updating the dtb with the kernel just shifts the risk of 
>> incompatibility to interactions between the firmware and the dtb.  The 
>> same backwards compatibility considerations when making kernel changes 
>> that depend on firmware changes should be made when making kernel 
>> changes that depend on dts changes.
> 
> As I told Timur, I'm speaking of addition of new nodes and code that 
> parses and expect those nodes to be there.

And what do we gain from this change in interface with the firmware on 
hardware that is not exactly under active development?  What problem are 
you trying to solve?  Why do we need to get rid of get_immrbase() (as 
opposed to being less reliant on it going forward, and tolerating its 
failure on platforms that may be virtualized and thus not have the 
complete IMMR/CCSR)?

Will any of these new nodes need anything to be filled in by u-boot?

-Scott