Hi, <div><br></div><div>I&#39;m trying to boot barrelfish on SCC. I&#39;ve managed to compile the source, get barrelfish0.obj and <a href="http://barrelfish48.mt">barrelfish48.mt</a>.</div><div>Then I use the bootscc.sh to boot it. For test, I just want to boot core 0 and core 1, but a weird problem</div>

<div>happens: core 1 is trying to boot core 0. Here is the output after system start.</div><div><br></div><div>----------------------OUTPUT START ------------------------------------</div><div><div>Kernel starting at address 0x80100000</div>

<div>hku@ubuntu:~/fish/<a href="http://hg.barrelfish.org/build$">hg.barrelfish.org/build$</a> My APIC ID: 0</div><div>Barrelfish CPU driver starting on scc core 0</div><div>init: invoked as: init 2097152</div><div>Spawning memory server (scc/sbin/mem_serv)...</div>

<div>Spawning monitor (scc/sbin/monitor)...</div><div>starting monitor as &#39;scc/sbin/monitor 327680 &#39;</div><div>monitor: invoked as: scc/sbin/monitor 327680</div><div>RAM allocator initialised, 1612 MB (of 1628 MB) available</div>

<div>Spawning chips on core 0</div><div>Spawning /scc/sbin/ramfsd on core 0</div><div>Spawning /scc/sbin/spawnd on core 0</div><div>Spawning /scc/sbin/startd on core 0</div><div>0 chips: client waiting for ramfs</div><div>

ramfsd.0: pre-populating from boot image...</div><div>0 chips: client waiting for ramfs</div><div>ramfsd.0: ready</div><div>0 chips: notifying client about ramfs</div><div>0 chips: notifying client about ramfs</div><div>
kernel 0: Allocating RAM at 0x80000000 uninitialized</div>
<div>kernel 0: Allocating RAM at 0x80010000 uninitialized</div><div>spawnd.0: coreid 0 is arch id 0</div><div>spawnd.0: coreid 1 is arch id 1</div><div>0 chips: client waiting for all_spawnds_up</div><div>Monitor 0: booting scc core 1 as &#39;/scc/sbin/cpu&#39;</div>

<div>kernel 0: Allocating RAM at 0x80020000 uninitialized</div><div>Kernel starting at address 0x80100000</div><div>My APIC ID: 1</div><div>Barrelfish CPU driver starting on scc core 1</div><div>init: invoked as: init 2097152</div>

<div>Spawning memory server (scc/sbin/mem_serv)...</div><div>Spawning monitor (scc/sbin/monitor)...</div><div>starting monitor as &#39;scc/sbin/monitor 327680 &#39;</div><div>monitor: invoked as: scc/sbin/monitor 327680</div>

<div>RAM allocator initialised, 1612 MB (of 1628 MB) available</div><div>Spawning chips on core 1</div><div>Spawning /scc/sbin/ramfsd on core 1</div><div>Spawning /scc/sbin/spawnd on core 1</div><div>Spawning /scc/sbin/startd on core 1</div>

<div>0 chips: client waiting for ramfs</div><div>ramfsd.1: pre-populating from boot image...</div><div>0 chips: client waiting for ramfs</div><div>ramfsd.1: ready</div><div>0 chips: notifying client about ramfs</div><div>

0 chips: notifying client about ramfs</div><div>kernel 1: Allocating RAM at 0x84000000 uninitialized</div><div>kernel 1: Allocating RAM at 0x84010000 uninitialized</div><div>spawnd.1: coreid 0 is arch id 0</div><div>spawnd.1: coreid 1 is arch id 1</div>

<div>0 chips: client waiting for all_spawnds_up</div><div>Monitor 1: booting scc core 0 as &#39;/scc/sbin/cpu&#39;</div><div>********* Why would core 1 want to boot core 0 ? **************</div><div>kernel 1: Allocating RAM at 0x84020000 uninitialized</div>

<div>kernel 1 PANIC! kernel assertion &quot;rck_get_coreid() == 0&quot; failed at ../kernel/arch/scc/rck.c:876</div><div>kernel 1: exception 3 (error code 0x0): breakpoint</div><div>On behalf of: monitor</div><div>Faulting instruction pointer (or following instruction): 0x8010a7bf (0x 10a7bf in binary)</div>

<div>EAX 0x80118000 EBX 0x80116e88 ECX 0x0 EDX 0x805202c0 ESP 0x80920a08</div><div>Top o&#39; stack:</div><div>0x8010a7bf 0x2 0x8 0x10 0x3 0x0 0x8010a7bf 0x8 0x2 0x80520180 0x80116e88 0x80920a44 0x8010c612 0x80116e88 0x210d6000 0x80920a64 0x8010c64b 0x801164a0 0x80114c10 0x80114b55 </div>

<div>No GDB backend</div></div><div>--------------- OUTPUT END ------------------------------</div><div><br></div><div>As I see it, core 1 seems thought that it&#39;s the bsp core (while it&#39;s not) so it&#39;s responsible to boot other cores. But I fail to see why core 1 would think like that.</div>

<div><br></div><div>Any ideas on this? Thanks in advance.</div><div><br></div><div>Regards,</div><div>Jinghao</div><div><br></div><div>FYI, this is my menu.lst.scc</div><div><br></div><div><div>  1 timeout 0</div><div>  2 </div>

<div>  3 # spawnd is used to control which cpus are booted</div><div>  4 #</div><div>  5 # &quot;spawnd boot&quot; will use the skb and pci to figure out and</div><div>  6 #  boot all cores in the machine</div><div>  7 #</div>

<div>  8 # &quot;spawnd boot bootscc=1-6&quot; will not use the skb and</div><div>  9 # boot the list of cores passed as argument.</div><div> 10 # The hardware id of the cores to boot should be specified.</div><div> 11 # This list may not include the bsp core id.</div>

<div> 12 </div><div> 13 title   Barrelfish</div><div> 14 root    (nd)</div><div> 15 kernel  /scc/sbin/cpu loglevel=4</div><div> 16 module  /scc/sbin/cpu</div><div> 17 module  /scc/sbin/init</div><div> 18 </div><div> 19 # Domains spawned by init</div>

<div> 20 module  /scc/sbin/mem_serv</div><div> 21 module  /scc/sbin/monitor</div><div> 22 </div><div> 23 module  /scc/sbin/chips boot</div><div> 24 module  /scc/sbin/ramfsd boot</div><div> 25 module  /scc/sbin/spawnd boot bootscc=0-1</div>

<div> 26 module  /scc/sbin/startd boot</div><div> 27 </div><div> 28 #module /scc/sbin/examples/xmpl-hello</div><div> 29 </div><div> 30 # modules needed to start the networking</div><div> 31 # module  /scc/sbin/eMAC core=0 device=2</div>

<div> 32 # module  /scc/sbin/netd core=0 cardname=eMAC2_0</div><div> 33 # module  /scc/sbin/eMAC core=1</div><div> 34 # module  /scc/sbin/netd core=1 cardname=eMAC2_1</div><div> 35 </div><div> 36 # Test for network throughput</div>

<div> 37 # module  /scc/sbin/netthroughput core=1 /nfs nfs://<a href="http://10.110.4.41/shared">10.110.4.41/shared</a> /nfs/pravin/testfile.txt</div><div> 38 </div><div> 39 # For webserver</div><div> 40 # module  /scc/sbin/webserver core=1 eMAC2_1 10.110.4.41 /shared/pravin/sw</div>

<div> 41 </div><div> 42 # RCK memory map</div><div> 43 # Everything up til VGA is private RAM (maybe we want to throw it away)</div><div> 44 mmap    map 0x0     0xa000      2</div><div> 45 # Everything after VGA is private RAM (we also live in this area)</div>

<div> 46 mmap    map 0xe800      0x26ff1800  1</div><div> 47 # Shared RAM (over all MCs) in the middle of address space</div><div> 48 #mmap   map 0x80000000  0x4000000   1</div><div> 49 mmap    map     0x80000000      0x40000000      1</div>

<div> 50 # At the very end we have some platform memory (bootup EEPROM)</div><div> 51 mmap    map 0xfffc0000  0x40000     2</div></div><div><br></div>