On Wed, 8 Jun 2011, Dave Martin wrote:
Bisecting when CONFIG_THUMB2_KERNEL=y reproducibly identified af3e4fd37a18f2e5a00175bc96061541d1364a3b as the first bad commit between v2.6.39 and linux-linaro-2.6.39/master, but it's obviously totally irrelevant and causes no code changes at all (which I confirmed by disassembling) :P Only the config.gz data and kernel signature in the kernel changes...
No, the code did change. I dismissed this commit at first, but I finally found the problem. Have a look at the fix:
http://article.gmane.org/gmane.linux.ports.arm.kernel/119896
I'm not entirely satisfied with the W() usage in there though, even less so by the THUMB(nop) that are inserted here and there to provide proper padding. As the patch above shows, this is just too easy to overlook and break. I wish we could get rid of them and make that code a bit more streamlined, but I have no bright idea for that at the moment.
It could be a decompressor problem or similar, but actually booting from an Image doesn't work for me either after or before the above commit.
The early serial port usage issue I mentioned before notwitstanding, there was actually a real bug there too, especially if you had CONFIG_OF=y but not using any DTB. The fix is here:
http://article.gmane.org/gmane.linux.ports.arm.kernel/119893
All those fixes plus a bunch of other fixes from mainline are now merged in linaro-2.6.39.
BTW, I'm using git://github.com/swetland/omap4boot.git which allows to push a kernel over USB and boot it directly, entirely bypassing U-Boot and the MMC card or the network, which is *WAY* more convenient for kernel development and git bisect runs (thanks to Kevin Hilman for the link). A simple './usbboot zImage' on your build machine and a press on the reset button on the Panda and it is booted. This requires CONFIG_CMDLINE_FORCE=y though.
Nicolas