Thread (6 messages) 6 messages, 5 authors, 2014-01-03

Re: commit e38c0a1f breaks powerpc boards with uli1575 chip

From: Scott Wood <hidden>
Date: 2014-01-03 00:04:28
Also in: linux-devicetree, lkml

On Mon, 2013-12-30 at 14:13 +1100, Benjamin Herrenschmidt wrote:
On Thu, 2013-12-19 at 08:42 +0400, Nikita Yushchenko wrote:
quoted
No, this does not help.

I've dumped the actual content of 'range' and 'addr' at the failure
point 
(i.e. ar point that returns error with e38c0a1f but passes without 
e38c0a1f ):

OF: default map, cp=0, s=10000, da=70
range:  01 00 00 00 00 00 00 00 00 00 00 00
 addr:  00 00 00 00 00 00 00 00 00 00 00 70
Something that has a #address-cells larger than 2, or more generally,
an address field that contains more than a single number, must have
a specific translation backend, like we have for PCI.

This is a bit annoying but originates from the original OFW stuff on
which this stuff is based where the bus node would provide the methods
for translation.
I can maybe see that for PCI which has a special encoding, but why is it
always needed?  E.g. if Freescale localbus had a 64-bit offset instead
of 32-bit, the child nodes would have 3 address cells, but
straightforward use of ranges would bring it down to 2 for the final
physical address.  Existing localbus nodes already have "an address
field that contains more than a single number"; it's just a simple
enough encoding that it works to treat it as if it were a single large
number.

-Scott
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help