<div dir="ltr">I agree, it would be much better to do the job without touching CFE. In fact after<br><div>changing those bits in CFE to boot always the core0 as the main thread, if one wants </div><div>to return to the OEM firmware it turns out that the board hangs when loading VoIP</div><div>stuff. Probably VoIP stuff is hardcoded in some way that wants the core0 for exclusive</div><div>use.</div><div><br></div><div>BTW, shouldn't be easier to do the job into the kernel rather than the lzma-loader?.</div><div>And without worrying which boards are affected, just do it for all BCM6358 boards (if </div><div>they booted the core1 as the main thread). I can't imagine any user wanting to run</div><div>Openwrt with half icache.</div><div><br></div><div>Regards.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2016-01-18 14:15 GMT+01:00 Jonas Gorski <span dir="ltr"><<a href="mailto:jogo@openwrt.org" target="_blank">jogo@openwrt.org</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<span class=""><br>
On Wed, Dec 2, 2015 at 9:37 PM, dani <<a href="mailto:dgcbueu@gmail.com">dgcbueu@gmail.com</a>> wrote:<br>
> In the HG556a router the partition mtd0, where CFE lives, is read only.<br>
> This patch allows this partition to be writeable.<br>
><br>
> The BCM6358 SoC has two cores, but they are not identical. The second core has<br>
> half icache.<br>
> core0: icache=32kB<br>
> core1: icache=16kB<br>
><br>
> As default the HG556a uses the second core as the main one (configured by CFE).<br>
> Since currently there isn't SMP support for using both cores, we want to use the<br>
> one with the best performance.<br>
><br>
> For using the core0 as the main one, we need to write some bytes at the offset<br>
> 0x014 of mtd0 (CFE). Therefore we need the mtd0 partition to be writeable.<br>
><br>
> After setting the core0 as the main one, the performance can increase up to<br>
> +20% (tested). The performance gain isn't marginal.<br>
><br>
> For setting the core0 as the main one in an easy way I wrote a very simple utility:<br>
> <a href="https://wiki.openwrt.org/_media/media/huawei/tp0set.tar.gz" rel="noreferrer" target="_blank">https://wiki.openwrt.org/_media/media/huawei/tp0set.tar.gz</a><br>
> It can switch from core0 to core1 or vice versa in OpenWrt writing proper bytes<br>
> into bcm6358 CFE (fully tested in the HG556a, no bricks).<br>
<br>
</span>To be honest, I'm not very comfortable with making the CFE partition<br>
writable, and rather add code to lzma-loader that switches back to<br>
thread 0, then add lzma-loader for the affected devices.<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
Jonas<br>
</font></span></blockquote></div><br></div>