<p><br>
On Jan 19, 2011 3:43 AM, &quot;Dave Martin&quot; &lt;<a href="mailto:dave.martin@linaro.org">dave.martin@linaro.org</a>&gt; wrote:<br>
&gt;<br>
&gt; Hi all,<br>
&gt;<br>
&gt; Apologies if this has been discussed before--- I don&#39;t see an obvious<br>
&gt; rebuttal in my quick searching past threads, so I&#39;ll just quickly ask<br>
&gt; the question:<br>
&gt;<br>
&gt; Could we use host-endianness for the device tree binary blob?</p>
<p>Hi David.</p>
<p>This has been discussed thoroughly and rejected. The dtb isn&#39;t so much bigendian as it is network byte order. While we /could/ switch it for arm, it creates all kinds of problems with tools and working with .dtb files on dissimilar platforms.  Plus all the property values must remain in BE because all the bindings are already defined that way in the OpenFirmware specifications.</p>

<p>Besides, there is no real advantage to changing it: it already works as-is on le architectures.  :-)</p>
<p>g.</p>
<p>&gt;<br>
&gt; The fdt binary format seems to lend itself strongly to a host-endian<br>
&gt; format: it begins with a word-sized magic number, and when parsing the<br>
&gt; device tree every elements type and size is known before that element<br>
&gt; is read; furthermore, every element is size-aligned.  Therefore, I<br>
&gt; (naively?) presume that a little-endian format should &quot;just work&quot;,<br>
&gt; simply by flipping the endianness of every element and discarding all<br>
&gt; the __be32_to_cpu() type stuff when reading the fdt at boot time.  The<br>
&gt; magic number ensures that there&#39;s no risk of accidentally reading the<br>
&gt; fst in the wrong byte order.<br>
&gt;<br>
&gt; Although it would be necessary to augment the fdt tools to cope with<br>
&gt; this, offline tools appear to be the right place to put this<br>
&gt; intelligence.  For the kernel to flip the byte order of everything in<br>
&gt; the fdt blob every time the system boots just seems unnecessary when<br>
&gt; the required endianness is statically known.<br>
&gt;<br>
&gt; Since fdt is new on ARM we have an opportunity to change determine the<br>
&gt; binary format now without breaking anything in the field -- we don&#39;t<br>
&gt; necessarily have to adopt the host-endian format on any other<br>
&gt; architectures if it&#39;s not desirable.<br>
&gt;<br>
&gt; Any thoughts?<br>
&gt;<br>
&gt; Cheers<br>
&gt; ---Dave<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; linux-arm-kernel mailing list<br>
&gt; <a href="mailto:linux-arm-kernel@lists.infradead.org">linux-arm-kernel@lists.infradead.org</a><br>
&gt; <a href="http://lists.infradead.org/mailman/listinfo/linux-arm-kernel">http://lists.infradead.org/mailman/listinfo/linux-arm-kernel</a><br>
</p>