Hi, <div><br></div><div>I'm trying to boot barrelfish on SCC. I'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 'scc/sbin/monitor 327680 '</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 '/scc/sbin/cpu'</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 'scc/sbin/monitor 327680 '</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 '/scc/sbin/cpu'</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 "rck_get_coreid() == 0" 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' 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's the bsp core (while it's not) so it'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 # "spawnd boot" 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 # "spawnd boot bootscc=1-6" 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>