Booting p4080ds on non-0 cpu

Gabbasov, Andrew Andrew_Gabbasov at mentor.com
Wed May 25 22:16:00 EST 2011


Hello Matthew,
 
You have made a patch "powerpc/fsl_booke: Add support to boot from core other than 0" some time ago, so you probably worked with booting the kernel on a cpu subset, particularly on the core other than 0.
 
Could you please describe any details how you ran the kernel from u-boot on a non-0 cpu?
 
I have a problem trying to boot linux on p4080ds platform on any non-0 cpu (as a first step to running AMP or mixed AMP/SMP configuration). I'm trying to run 2.6.34.6 kernel with some Freescale patches in SMP configuration with full original device tree and device tree with some cpu nodes removed. I'm using the u-boot script, shown at the bottom of this message.
 
If I run "bootm go" after the script commands (thus running the kernel on cpu 0), the kernel runs fine.
 
When I'm trying to run the SMP kernel with full device tree on cpu 1 using the following commands after the script:
  fdt boot 1
  cpu 1 release 0 1 c00000 -
the kernel begins to run, but soon crashes. Possible reasons are: "Unrecoverable FP Unavailable Exception", at nearly random place; memory allocation errors somewhere in DPAA code and then segmentation fault (sig 11); unknown exception (sig 4). Sometimes it doesn't even show anything on the console (too early exception?), but sometimes it boots successfully up to the shell prompt.
 
When I'm trying to run the SMP kernel with the device tree with cpu 0 stripped out (commented out the whole cpu0 node and all properties referring to it with &cpu0), using the following commands after the script:
  fdt boot 1
  cpu 1 release 0 0 c00000 -
  [Note the difference in the parameter to 'cpu 1 release' command,
    it should be a logical cpu number, which is different]
the result is almost the same, the kernel crashes too. The reasons are similar to the above, with more often "Unrecoverable FP Unavailable Exception".
 
Can you give any advise why can this happen, and what I could be doing wrong?
 
Thanks in advance,
 
Best regards,
Andrew
 
setenv kernel_base 00000000
setenv kernel_size 30000000
# Helper variables
setenv kernel_load_offset 01000000
setenv dtb_load_offset    00c00000
setexpr kernel_load_addr $kernel_base + $kernel_load_offset
setexpr dtb_load_addr    $kernel_base + $dtb_load_offset
tftp $kernel_load_addr $tftpdir/uImage-p4080ds.bin
tftp $dtb_load_addr    $tftpdir/uImage-p4080ds.dtb
setenv bootargs root=/dev/nfs rw nfsroot=$serverip:/tftpboot/$tftpdir/rootfs-4080ds ip=dhcp console=ttyS0,115200 debug
setenv bootm_low  $kernel_base
setenv bootm_size $kernel_size
interrupts off
bootm start $kernel_load_addr - $dtb_load_addr
bootm loados
bootm fdt
fdt boardsetup
fdt chosen
bootm prep
# cpu 1 release $kernel_base - $dtb_load_addr -
 
 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ozlabs.org/pipermail/linuxppc-dev/attachments/20110525/ef775e1b/attachment.html>


More information about the Linuxppc-dev mailing list