Legacy kernel won't start
If your 3.4.x kernel refuses to boot / gets stuck right after "Starting kernel ...": Double-check that bootm_boot_mode is set to "sec"! (see above)
If you don't have a serial console and only use VGA/HDMI/LCD, then it might be also the case of "Unrecognized/unsupported machine ID" (see below).
Unrecognized/unsupported machine ID
The sunxi-3.4 kernel may fail to boot with one of the following error messages on the serial console (but this message is not visible on a
HDMI monitor or a LCD display!):
Error: unrecognized/unsupported machine ID (r1 = 0x10001008).
Error: unrecognized/unsupported machine ID (r1 = 0x1000102a).
Error: unrecognized/unsupported machine ID (r1 = 0x100010bb).
In this case either upgrade to a recent stage/sunxi-3.4 kernel (github branch) - or try to "Enable workarounds for booting old kernels" in U-Boot: make menuconfig or make CROSS_COMPILE=arm-linux-gnueabihf- menuconfig, the option is located under "ARM architecture". (Make sure to rebuild your U-Boot after changing it.)
If upgrading to stage/sunxi-3.4 is not an option (i.e. using some old and very much diverged sunxi-3.4 fork is really necessary), then the following patches can be cherry-picked (i.e. selectively merged as a set):
wget
https://github.com/linux-sunxi/linux...139ad8c5.patch
wget
https://github.com/linux-sunxi/linux...c1687db6.patch
wget
https://github.com/linux-sunxi/linux...21ff43b5.patch
wget
https://github.com/linux-sunxi/linux...2bcb3ec8.patch
wget
https://github.com/linux-sunxi/linux...14231af9.patch
wget
https://github.com/linux-sunxi/linux...74d061d9.patch
wget
https://github.com/linux-sunxi/linux...a4593a88.patch
git am 5052b83aa44dc16d6662d8d9d936166c139ad8c5.patch
git am 9a1cd034181af628d4145202289e1993c1687db6.patch
git am c4c4664ed1a2f35e54a33ae4e65f517721ff43b5.patch
git am ade08aa6e5249a9e75a97393e86c250b2bcb3ec8.patch
git am 16b25a95327f45a995f6efcf3e9d83a414231af9.patch
git am dea62f21deb177053b84b15a519dff6c74d061d9.patch
git am d47d367036be38c5180632ec8a3ad169a4593a88.patch
Exclamation.png It is required to apply all of them, as they contain important stability/safety changes. The last patch in this series only takes care of the safety guard, which exists there specifically to block booting problematic kernels. Just removing the safety guard alone without applying all the bugfixes will lead to obscure runtime problems, please don't be tempted to do this.