After more ‘investigation’, I managed to find a working U-Boot for a 64-bit boot of the Raspberry Pi 3, by copying it from the boot directory of this: http://www.tom-yam.or.jp/rpi3/rpi3-arm64-debian-20160414.img.xz found towards the end of the latest 64-bit thread on the Pi Forum: https://www.raspberrypi.org/forums/viewtopic.php?f=72&t=137963&sid=cd15abd8d4dd2a2d5c517f47a3e4f5e4&start=125 . Thanks to xyinao for putting it all together..
I copied the kernel Image etc into a Fedora 23 aarch64 SDcard, and it booted OK, but I noticed one odd thing… There were only 3 CPU cores instead of 4.. I tested by booting the original Debian system, with the same kernel image, and there were 4…
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.036066] Detected VIPT I-cache on CPU1 [ 0.036112] CPU1: Booted secondary processor [410fd034] [ 0.048091] Detected VIPT I-cache on CPU2 [ 0.048120] CPU2: Booted secondary processor [410fd034] [ 0.060128] Detected VIPT I-cache on CPU3 [ 0.060158] CPU3: Booted secondary processor [410fd034] [ 0.060218] Brought up 4 CPUs [ 0.060349] SMP: Total of 4 processors activated. [ 0.060375] CPU: All CPU(s) started at EL2
I wanted (as usual) to compile my own kernel, and found that the 4.5.0-based one at https://github.com/zeldin/linux/tree/rpi3 booted, but then hung.. I tried another (4.6-rc3-based) version at https://github.com/anholt/linux/tree/bcm2837-64-next, and this one did boot successfully:
......... Fedora 23 (Twenty Three) Kernel 4.6.0-rc3-next-20160413 on an aarch64 (ttyS0) .................... # uname -a Linux rgpi3 4.6.0-rc3-next-20160413 #1 SMP Mon Apr 25 21:14:33 EDT 2016 aarch64 aarch64 aarch64 GNU/Linux
But… I still only had three CPU cores:
# dmesg |grep CPU [ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Boot CPU: AArch64 Processor [410fd034] [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.102974] Detected VIPT I-cache on CPU1 [ 0.103023] CPU1: Booted secondary processor [410fd034] [ 0.103417] Detected VIPT I-cache on CPU2 [ 0.103449] CPU2: Booted secondary processor [410fd034] [ 1.107755] CPU3: failed to come online [ 1.107766] CPU3: failed in unknown state : 0x0 [ 1.107785] Brought up 3 CPUs [ 1.107801] CPU: All CPU(s) started at EL2
So… Nearly there, but more investigation needed..
Robert Gadsdon. April 25, 2016.