Hi, Stefan.<div><br></div><div>Thanks for your concern about this.</div><div><br></div><div>I applied the patch in a clean revision release2011-09-02. Basically, I think this patch did the same thing that I described earlier: use rck_get_coreid to correctly set bsp (or apic_bsp in later revision). But just as you mentioned, more bugs coming after that, especially kernel 1 still found the core_data is corrupted. So the kernel still panic.</div>
<div><br></div><div>You said that a clean revision of release2011-09-02 can successfully boot up on SCC, but I fail to see any reason for that. I reviewed the code and find that bsp is not correctly set in that revision. So what's you idea about why release2011-09-02 can boot but later releases (e.g. tip) can not? What's the difference exactly, especially in the startup part?</div>
<div><br></div><div>BTW, I just use the bootscc.sh script shipped with the source to boot BF on SCC.</div><div><br></div><div>Thanks,</div><div>Jinghao</div><div><br><div class="gmail_quote">On Sat, Apr 28, 2012 at 10:41 PM, Stefan Kästle <span dir="ltr"><<a href="mailto:stefan.kaestle@inf.ethz.ch" target="_blank">stefan.kaestle@inf.ethz.ch</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
I used the one shipped with the release:<br>
<br>
<font color="#660000"><tt>timeout 0</tt><div><br>
<br>
<tt># spawnd is used to control which cpus are booted</tt><br>
</div><tt>#</tt><div><br>
<tt># "spawnd boot" will use the skb and pci to figure out and</tt><br>
</div><div><tt># boot all cores in the machine</tt><br>
</div><tt>#</tt><div><br>
<tt># "spawnd boot bootscc=1-6" will not use the skb and</tt><br>
</div><div><tt># boot the list of cores passed as argument.</tt><br>
</div><div><tt># The hardware id of the cores to boot should be specified.</tt><br>
</div><div><tt># This list may not include the bsp core id.</tt><br>
<br>
</div><tt>title Barrelfish</tt><br>
<tt>root (nd)</tt><br>
<tt>kernel /scc/sbin/cpu loglevel=4</tt><br>
<tt>module /scc/sbin/cpu</tt><br>
<tt>module /scc/sbin/init</tt><div><br>
<br>
<tt># Domains spawned by init</tt><br>
</div><tt>module /scc/sbin/mem_serv</tt><br>
<tt>module /scc/sbin/monitor</tt><br>
<br>
<tt>module /scc/sbin/chips boot</tt><br>
<tt>module /scc/sbin/ramfsd boot</tt><br>
<tt>module /scc/sbin/spawnd boot bootscc=1,2,3</tt><br>
<tt>module /scc/sbin/startd boot</tt><div><br>
<tt># modules needed to start the networking</tt><br>
</div><tt># module /scc/sbin/eMAC core=0</tt><div><br>
<tt># module /scc/sbin/netd core=0 cardname=eMAC2_0</tt><br>
</div><tt># module /scc/sbin/eMAC core=1</tt><div><br>
<tt># module /scc/sbin/netd core=1 cardname=eMAC2_1</tt><br>
<br>
</div><div><tt># Test for network throughput</tt><br>
</div><div><tt># module /scc/sbin/netthroughput core=1 /nfs
nfs://<a href="http://10.110.4.41/shared" target="_blank">10.110.4.41/shared</a> /nfs/pravin/testfile.txt</tt><br>
<br>
</div><tt># For webserver</tt><div><br>
<tt># module /scc/sbin/webserver core=1 eMAC2_1 10.110.4.41
/shared/pravin/sw</tt><br>
<br>
<br>
</div><tt># RCK memory map</tt><div><br>
<tt># Everything up til VGA is private RAM (maybe we want to throw
it away)</tt><br>
</div><div><tt>mmap map 0x0 0xa000 2</tt><br>
</div><div><tt># Everything after VGA is private RAM (we also live in this
area)</tt><br>
</div><div><tt>mmap map 0xe800 0x26ff1800 1</tt><br>
</div><div><tt># Shared RAM (over all MCs) in the middle of address space</tt><br>
</div><div><tt>#mmap map 0x80000000 0x4000000 1</tt><br>
</div><div><tt>mmap map 0x80000000 0x40000000 1</tt><br>
</div><div><tt># At the very end we have some platform memory (bootup EEPROM)</tt><br>
</div><div><tt>mmap map 0xfffc0000 0x40000 2</tt><br>
</div></font><br>
The following patch fixes your issue. Can you try if this work for
your tree? I only tested this on the tip (where the problem was
fixed, but the system did still not come up). How to you train and
boot the SCC?<br>
<br>
<font color="#330000"><font color="#660000"><tt>diff -r b8f91be7c881
kernel/arch/x86/startup_x86.c<br>
--- a/kernel/arch/x86/startup_x86.c Fri Mar 02 09:46:13
2012 +0100<br>
+++ b/kernel/arch/x86/startup_x86.c Mon Apr 23 21:46:11
2012 +0200<br>
@@ -302,7 +302,9 @@<br>
/* spawn init */<br>
init_dcb = spawn_bsp_init(BSP_INIT_MODULE_PATH,
bsp_alloc_phys);<br>
} else {<br>
+#if !defined(__scc__) <br>
my_core_id = core_data->dst_core_id;<br>
+#endif<div><br>
<br>
/* Initialize the allocator */<br></div>
app_alloc_phys_start =
core_data->memory_base_start;diff -r b8f91be7c881
kernel/arch/x86_32/init.c<br>
--- a/kernel/arch/x86_32/init.c Fri Mar 02 09:46:13 2012 +0100<br>
+++ b/kernel/arch/x86_32/init.c Mon Apr 23 21:46:11 2012 +0200<br>
@@ -573,7 +573,8 @@<br>
<br>
// XXX: Set core ID and fake APIC ID to be the tile's
core ID<br>
my_core_id = apic_id = rck_get_coreid();<br>
- printf("My APIC ID: %d\n", apic_id);<br>
+ apic_bsp = (my_core_id == 0);<br>
+ printf("My APIC ID: %d bsp=%d\n", apic_id, apic_bsp);<br>
#endif<br>
<br>
// do not remove/change this printf: needed by regression
harness</tt></font><br>
</font><div><div><br>
<br>
On 04/28/2012 03:51 PM, Shi Jinghao (史经浩) wrote:
<blockquote type="cite">
<div class="gmail_extra">I did a clean clone of release2011-09-02 </div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra"><font face="'courier new', monospace">hg
clone -r release2011-09-02 <a href="http://hg.barrelfish.org" target="_blank">http://hg.barrelfish.org</a>
release2011-09-02</font></div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">and it still fails with this message when
booting:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra"><font face="'courier new', monospace">kernel
1 PANIC! kernel assertion "rck_get_coreid() == 0" failed at
../kernel/arch/scc/rck.c:874</font></div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">which shows that kernel 1 is still trying
to boot other cores. The same output also occurs on a</div>
<div class="gmail_extra">clean release2011-11-10.</div>
<div class="gmail_extra">
<br>
</div>
<div class="gmail_extra">Can you show me your menu.lst.scc</div>
<div class="gmail_extra">so that I can check if my boot
configuration is not correct. Mine is:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">
<div class="gmail_extra"> 1 timeout 0</div>
<div class="gmail_extra"> 2 </div>
<div class="gmail_extra"> 3 # spawnd is used to control which
cpus are booted</div>
<div class="gmail_extra"> 4 #</div>
<div class="gmail_extra">
5 # "spawnd boot" will use the skb and pci to figure out and</div>
<div class="gmail_extra"> 6 # boot all cores in the machine</div>
<div class="gmail_extra"> 7 #</div>
<div class="gmail_extra"> 8 # "spawnd boot bootscc=1-6" will
not use the skb and</div>
<div class="gmail_extra"> 9 # boot the list of cores passed as
argument.</div>
<div class="gmail_extra"> 10 # The hardware id of the cores to
boot should be specified.</div>
<div class="gmail_extra"> 11 # This list may not include the bsp
core id.</div>
<div class="gmail_extra"> 12 </div>
<div class="gmail_extra"> 13 title Barrelfish</div>
<div class="gmail_extra"> 14 root (nd)</div>
<div class="gmail_extra"> 15 kernel /scc/sbin/cpu loglevel=4</div>
<div class="gmail_extra">
16 module /scc/sbin/cpu</div>
<div class="gmail_extra"> 17 module /scc/sbin/init</div>
<div class="gmail_extra"> 18 </div>
<div class="gmail_extra"> 19 # Domains spawned by init</div>
<div class="gmail_extra"> 20 module /scc/sbin/mem_serv</div>
<div class="gmail_extra"> 21 module /scc/sbin/monitor</div>
<div class="gmail_extra"> 22 </div>
<div class="gmail_extra"> 23 module /scc/sbin/chips boot</div>
<div class="gmail_extra"> 24 module /scc/sbin/ramfsd boot</div>
<div class="gmail_extra"> 25 module /scc/sbin/spawnd boot
bootscc=1-3</div>
<div class="gmail_extra"> 26 module /scc/sbin/startd boot</div>
<div class="gmail_extra"> 27 </div>
<div class="gmail_extra"> 28 module
/scc/sbin/examples/xmpl-hello core=0</div>
<div class="gmail_extra"> 29 </div>
<div class="gmail_extra"> 30 # modules needed to start the
networking</div>
<div class="gmail_extra"> 31 # module /scc/sbin/eMAC core=0
device=2</div>
<div class="gmail_extra"> 32 # module /scc/sbin/netd core=0
cardname=eMAC2_0</div>
<div class="gmail_extra"> 33 # module /scc/sbin/eMAC core=1</div>
<div class="gmail_extra"> 34 # module /scc/sbin/netd core=1
cardname=eMAC2_1</div>
<div class="gmail_extra"> 35 </div>
<div class="gmail_extra"> 36 # Test for network throughput</div>
<div class="gmail_extra"> 37 # module /scc/sbin/netthroughput
core=1 /nfs nfs://<a href="http://10.110.4.41/shared" target="_blank">10.110.4.41/shared</a>
/nfs/pravin/testfile.txt</div>
<div class="gmail_extra"> 38 </div>
<div class="gmail_extra">
39 # For webserver</div>
<div class="gmail_extra"> 40 # module /scc/sbin/webserver
core=1 eMAC2_1 10.110.4.41 /shared/pravin/sw</div>
<div class="gmail_extra"> 41 </div>
<div class="gmail_extra"> 42 # RCK memory map</div>
<div class="gmail_extra">
43 # Everything up til VGA is private RAM (maybe we want to
throw it away)</div>
<div class="gmail_extra"> 44 mmap map 0x0 0xa000 2</div>
<div class="gmail_extra"> 45 # Everything after VGA is private
RAM (we also live in this area)</div>
<div class="gmail_extra"> 46 mmap map 0xe800 0x26ff1800
1</div>
<div class="gmail_extra"> 47 # Shared RAM (over all MCs) in the
middle of address space</div>
<div class="gmail_extra"> 48 #mmap map 0x80000000 0x4000000
1</div>
<div class="gmail_extra"> 49 mmap map 0x80000000
0x40000000 1</div>
<div class="gmail_extra"> 50 # At the very end we have some
platform memory (bootup EEPROM)</div>
<div class="gmail_extra"> 51 mmap map 0xfffc0000 0x40000
2</div>
<div><br>
</div>
<br>
<div class="gmail_quote">On Sat, Apr 28, 2012 at 5:23 PM, Stefan
Kästle <span dir="ltr"><<a href="mailto:stefan.kaestle@inf.ethz.ch" target="_blank">stefan.kaestle@inf.ethz.ch</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hi,<br>
<br>
Yes, exactly: <tt>apic_is_bsp</tt> is broken on the SCC.
It should use <tt>rck_get_coreid</tt> to initialize <tt>apic_bsp</tt>,
but I doesn't. If fixed this issue in my tree, but it
won't help you, as there are more bugs coming up after
that.<br>
<br>
Are you sure you reverted your revision properly? Can you
try a clean clone of that revision? I tested revision
release2011-09-02 on our SCC, and it worked.
<div>
<div><br>
<br>
On 04/27/2012 11:55 AM, Shi Jinghao (史经浩) wrote:
<blockquote type="cite">
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Here is my progress update
on the problem of booting on SCC.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">I found that the variable
bsp is not correctly set in apic_init
(/kernel/arch/x86/apic.c). bsp is initiated as
true when defined. But there is no code that set
its value when __scc__ is defined. The only code
that touch bsp is wapped by #if !defined(__scc__)
|| defined.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">So I added the following
line in text_init (/kernel/arch/x86_32/init.c),
right after print the "My APIC ID:" message, </div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">bsp = (apic_id == 0);</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">It's a temporal hack that
we assume core 0 is always the bsp core.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">After done this, core 1
will realize that it's not bsp core so it will not
try to boot core 0. But then I immediately found
that the core_data passed to core 1 is corrupted.
I found this from:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">-
core_data->memory_base_start = 0x0ffb7000,
which seems ok but core_data->memory_bits = 0,
this will make app_alloc_phys_end = 0x0ffb7001 and
fail app_alloc_phys</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">- core_data->dst_core_id
and src_arch_id is wrong (some meaningless number)</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">I'm trying to figure out
whether core 0 has place the x86_core_data
structure correctly..</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Thanks,</div>
<div class="gmail_extra">Jinghao<br>
<br>
<div class="gmail_quote">On Fri, Apr 27, 2012 at
2:18 PM, Shi Jinghao <span dir="ltr"><<a href="mailto:jhshi89@gmail.com" target="_blank">jhshi89@gmail.com</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_extra">Hi, Stefan,</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">I tried
release2011-09-02 but it's still not work,
and the same problem occurs.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Don't know if you got
any clue yet, but when I insert a printk in
function kernel_startup
(/kernel/arch/x86/startup_x86.c). I find
that the function apic_is_bsp() may not work
properly: each core think it' startup core!!
But when I traced the code and come to
apic_base_msr (function apic_init in file
/kernel/arch/x86/apic.c), I am lost, and can
not figure out where apic_base_msr.bsp is
set. Any hints here?</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Thanks,</div>
<div class="gmail_extra">Jinghao</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Here is the code
snippet where I inserted printk, FYI:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">
<div class="gmail_extra">290 if
(apic_is_bsp()) {</div>
<div class="gmail_extra">291
printk(LOG_DEBUG, "\n in kernel_startup, I
am BSP\n");</div>
<div class="gmail_extra">292 /*
Initialize the location to allocate phys
memory from */</div>
<div class="gmail_extra">293
bsp_init_alloc_addr =
glbl_core_data->start_free_ram;</div>
<div class="gmail_extra"> 294 </div>
<div class="gmail_extra">295 /*
spawn init */</div>
<div class="gmail_extra">296
init_dcb =
spawn_bsp_init(BSP_INIT_MODULE_PATH,
bsp_alloc_phys);</div>
<div class="gmail_extra">297 } else {</div>
<div class="gmail_extra">298
printk(LOG_DEBUG, "\n in kernel_startup, I
am NOT BSP\n");</div>
<div class="gmail_extra">299
my_core_id = core_data->dst_core_id;</div>
<div class="gmail_extra">300 </div>
<div class="gmail_extra">301 /*
Initialize the allocator */</div>
<div class="gmail_extra">302
app_alloc_phys_start =
core_data->memory_base_start;</div>
<div class="gmail_extra">303
app_alloc_phys_end = ((lpaddr_t)1
<< core_data->memory_bits) +</div>
<div class="gmail_extra">304
app_alloc_phys_start;</div>
<div class="gmail_extra">305 </div>
<div class="gmail_extra">306
init_dcb = spawn_app_init(core_data,
APP_INIT_PROG_NAME, app_alloc_phys);</div>
<div class="gmail_extra">307 }</div>
<div>
<div>
<div><br>
</div>
<br>
<div class="gmail_quote">On Tue, Apr 24,
2012 at 4:13 AM, Stefan Kästle <span dir="ltr"><<a href="mailto:stefan.kaestle@inf.ethz.ch" target="_blank">stefan.kaestle@inf.ethz.ch</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000"> Hi,<br>
<br>
this is harder to fix than I
originally though. I will take
some time to fix (especially since
I am a little busy right now).<br>
<br>
Maybe you want to use an earlier
version of Barrelfish in the
meanwhile, e.g. revision
release2011-09-02?! Since then,
nothing significantly changed for
the SCC code anyway. That one
works fine on our SCC. In case you
revert, make sure to do a clean
rebuild!<br>
<br>
Cheers<br>
Stefan<br>
<br>
On 04/22/2012 12:18 PM, Shi
Jinghao (史经浩) wrote:
<blockquote type="cite">
<div class="gmail_extra">Hi,
stefan.</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">I
changed the line as you
instructed and it works. But
when I try to boot core 0, 1,
2 ,3</div>
<div class="gmail_extra"> with
the following line:</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">module
/scc/sbin/spawnd boot
bootscc=1-3</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">The
same problem occurs (ouput
attached). So what's the
proper syntax that correctly</div>
<div class="gmail_extra">boot
scc cores (e.g. {0, 1, 2, 3},
or {0, 2, 4, 6} )?</div>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">Regards,</div>
<div class="gmail_extra">Jinghao</div>
<div class="gmail_extra"> <br>
</div>
<div class="gmail_extra">
---------- OUTPUT START
------------------------------</div>
<div class="gmail_extra">
<div class="gmail_extra">Kernel
starting at address
0x80100000</div>
<div>Barrelfish CPU driver
starting on scc core 0</div>
</div>
<div class="gmail_extra">
<div class="gmail_extra">init:
invoked as: init 2097152</div>
<div class="gmail_extra">Spawning
memory server
(scc/sbin/mem_serv)...</div>
<div class="gmail_extra">Spawning
monitor
(scc/sbin/monitor)...</div>
<div class="gmail_extra">
starting monitor as
'scc/sbin/monitor 327680 '</div>
<div class="gmail_extra">monitor:
invoked as: scc/sbin/monitor
327680</div>
<div class="gmail_extra">RAM
allocator initialised, 1612
MB (of 1628 MB) available</div>
<div class="gmail_extra">Spawning
chips on core 0</div>
<div class="gmail_extra">Spawning
/scc/sbin/ramfsd on core 0</div>
<div class="gmail_extra">Spawning
/scc/sbin/spawnd on core 0</div>
<div class="gmail_extra">Spawning
/scc/sbin/startd on core 0</div>
<div class="gmail_extra">0
chips: client waiting for
ramfs</div>
<div class="gmail_extra">ramfsd.0:
pre-populating from boot
image...</div>
<div class="gmail_extra">0
chips: client waiting for
ramfs</div>
<div class="gmail_extra">
ramfsd.0: ready</div>
<div class="gmail_extra">0
chips: notifying client
about ramfs</div>
<div class="gmail_extra">0
chips: notifying client
about ramfs</div>
<div class="gmail_extra">kernel
0: Allocating RAM at
0x80000000 uninitialized</div>
<div class="gmail_extra">kernel
0: Allocating RAM at
0x80010000 uninitialized</div>
<div class="gmail_extra">spawnd.0:
coreid 0 is arch id 0</div>
<div class="gmail_extra">spawnd.0:
coreid 1 is arch id 1</div>
<div class="gmail_extra">
spawnd.0: coreid 2 is arch
id 2</div>
<div class="gmail_extra">spawnd.0:
coreid 3 is arch id 3</div>
<div class="gmail_extra">0
chips: client waiting for
all_spawnds_up</div>
<div class="gmail_extra">Monitor
0: booting scc core 1 as
'/scc/sbin/cpu'</div>
<div class="gmail_extra">kernel
0: Allocating RAM at
0x80020000 uninitialized</div>
<div class="gmail_extra">Kernel
starting at address
0x80100000</div>
<div class="gmail_extra">My
APIC ID: 1</div>
<div class="gmail_extra">
Barrelfish CPU driver
starting on scc core 1</div>
<div class="gmail_extra">init:
invoked as: init 2097152</div>
<div class="gmail_extra">Spawning
memory server
(scc/sbin/mem_serv)...</div>
<div class="gmail_extra">Spawning
monitor
(scc/sbin/monitor)...</div>
<div class="gmail_extra">
starting monitor as
'scc/sbin/monitor 327680 '</div>
<div class="gmail_extra">monitor:
invoked as: scc/sbin/monitor
327680</div>
<div class="gmail_extra">RAM
allocator initialised, 1612
MB (of 1628 MB) available</div>
<div class="gmail_extra">Spawning
chips on core 1</div>
<div class="gmail_extra">Spawning
/scc/sbin/ramfsd on core 1</div>
<div class="gmail_extra">Spawning
/scc/sbin/spawnd on core 1</div>
<div class="gmail_extra">Spawning
/scc/sbin/startd on core 1</div>
<div class="gmail_extra">0
chips: client waiting for
ramfs</div>
<div class="gmail_extra">ramfsd.1:
pre-populating from boot
image...</div>
<div class="gmail_extra">0
chips: client waiting for
ramfs</div>
<div class="gmail_extra">
ramfsd.1: ready</div>
<div class="gmail_extra">0
chips: notifying client
about ramfs</div>
<div class="gmail_extra">0
chips: notifying client
about ramfs</div>
<div class="gmail_extra">kernel
1: Allocating RAM at
0x84000000 uninitialized</div>
<div class="gmail_extra">kernel
1: Allocating RAM at
0x84010000 uninitialized</div>
<div class="gmail_extra">spawnd.1:
coreid 0 is arch id 2</div>
<div class="gmail_extra">spawnd.1:
coreid 1 is arch id 1</div>
<div class="gmail_extra">
spawnd.1: coreid 2 is arch
id 3</div>
<div class="gmail_extra">0
chips: client waiting for
all_spawnds_up</div>
<div class="gmail_extra">Monitor
1: booting scc core 0 as
'/scc/sbin/cpu'</div>
<div class="gmail_extra">
kernel 1: Allocating RAM at
0x84020000 uninitialized</div>
<div class="gmail_extra">kernel
1 PANIC! kernel assertion
"rck_get_coreid() == 0"
failed at
../kernel/arch/scc/rck.c:876</div>
<div class="gmail_extra">kernel
1: exception 3 (error code
0x0): breakpoint</div>
<div class="gmail_extra">On
behalf of: monitor</div>
<div class="gmail_extra">Faulting
instruction pointer (or
following instruction):
0x8010a7bf (0x 10a7bf in
binary)</div>
<div class="gmail_extra">EAX
0x80118000 EBX 0x80116e88
ECX 0x0 EDX 0x805202c0 ESP
0x80920a08</div>
<div class="gmail_extra">Top
o' stack:</div>
<div class="gmail_extra">0x8010a7bf
0x2 0x8 0x10 0x3 0x0
0x8010a7bf 0x8 0x2
0x80520180 0x80116e88
0x80920a44 0x8010c612
0x80116e88 0x210d6000
0x80920a64 0x8010c64b
0x801164a0 0x80114c10
0x80114b55 </div>
<div class="gmail_extra">No
GDB backend</div>
<div class="gmail_extra">----------------
OUTPUT END
----------------------------</div>
<div><br>
</div>
<br>
<div class="gmail_quote">On
Sun, Apr 22, 2012 at 5:33
PM, <span dir="ltr"><<a href="mailto:barrelfish-users-request@lists.inf.ethz.ch" target="_blank">barrelfish-users-request@lists.inf.ethz.ch</a>></span>
wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Send
Barrelfish-users mailing
list submissions to<br>
<a href="mailto:barrelfish-users@lists.inf.ethz.ch" target="_blank">barrelfish-users@lists.inf.ethz.ch</a><br>
<br>
To subscribe or
unsubscribe via the World
Wide Web, visit<br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users</a><br>
or, via email, send a
message with subject or
body 'help' to<br>
<a href="mailto:barrelfish-users-request@lists.inf.ethz.ch" target="_blank">barrelfish-users-request@lists.inf.ethz.ch</a><br>
<br>
You can reach the person
managing the list at<br>
<a href="mailto:barrelfish-users-owner@lists.inf.ethz.ch" target="_blank">barrelfish-users-owner@lists.inf.ethz.ch</a><br>
<br>
When replying, please edit
your Subject line so it is
more specific<br>
than "Re: Contents of
Barrelfish-users
digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Problems when booting
Barrelfish on SCC (????
<<a href="mailto:jhshi@cs.hku.hk" target="_blank">jhshi@cs.hku.hk</a>>)<br>
2. Re: Problems when
booting Barrelfish on SCC
(Stefan K?stle)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Sun, 22 Apr 2012
17:12:57 +0800<br>
From: Shi Jinghao (????
<<a href="mailto:jhshi@cs.hku.hk" target="_blank">jhshi@cs.hku.hk</a>><br>
Subject:
[Barrelfish-users]
Problems when booting
Barrelfish on SCC<br>
To: <a href="mailto:barrelfish-users@lists.inf.ethz.ch" target="_blank">barrelfish-users@lists.inf.ethz.ch</a><br>
Message-ID:<br>
<<a href="mailto:CAKdW-HFRKv6HWqAxwsL5MMJRqot6BSPkHXPx9ecXg3eaONRHZw@mail.gmail.com" target="_blank">CAKdW-HFRKv6HWqAxwsL5MMJRqot6BSPkHXPx9ecXg3eaONRHZw@mail.gmail.com</a>><br>
Content-Type: text/plain;
charset="iso-8859-1"<br>
<br>
Hi,<br>
<br>
I'm trying to boot
barrelfish on SCC. I've
managed to compile the
source,<br>
get barrelfish0.obj and <a href="http://barrelfish48.mt" target="_blank">barrelfish48.mt</a>.<br>
Then I use the bootscc.sh
to boot it. For test, I
just want to boot core 0<br>
and core 1, but a weird
problem<br>
happens: core 1 is trying
to boot core 0. Here is
the output after system<br>
start.<br>
<br>
----------------------OUTPUT
START
------------------------------------<br>
Kernel starting at address
0x80100000<br>
hku@ubuntu:~/fish/<a href="http://hg.barrelfish.org/build$" target="_blank">hg.barrelfish.org/build$</a>
My APIC ID: 0<br>
Barrelfish CPU driver
starting on scc core 0<br>
init: invoked as: init
2097152<br>
Spawning memory server
(scc/sbin/mem_serv)...<br>
Spawning monitor
(scc/sbin/monitor)...<br>
starting monitor as
'scc/sbin/monitor 327680 '<br>
monitor: invoked as:
scc/sbin/monitor 327680<br>
RAM allocator initialised,
1612 MB (of 1628 MB)
available<br>
Spawning chips on core 0<br>
Spawning /scc/sbin/ramfsd
on core 0<br>
Spawning /scc/sbin/spawnd
on core 0<br>
Spawning /scc/sbin/startd
on core 0<br>
0 chips: client waiting
for ramfs<br>
ramfsd.0: pre-populating
from boot image...<br>
0 chips: client waiting
for ramfs<br>
ramfsd.0: ready<br>
0 chips: notifying client
about ramfs<br>
0 chips: notifying client
about ramfs<br>
kernel 0: Allocating RAM
at 0x80000000
uninitialized<br>
kernel 0: Allocating RAM
at 0x80010000
uninitialized<br>
spawnd.0: coreid 0 is arch
id 0<br>
spawnd.0: coreid 1 is arch
id 1<br>
0 chips: client waiting
for all_spawnds_up<br>
Monitor 0: booting scc
core 1 as '/scc/sbin/cpu'<br>
kernel 0: Allocating RAM
at 0x80020000
uninitialized<br>
Kernel starting at address
0x80100000<br>
My APIC ID: 1<br>
Barrelfish CPU driver
starting on scc core 1<br>
init: invoked as: init
2097152<br>
Spawning memory server
(scc/sbin/mem_serv)...<br>
Spawning monitor
(scc/sbin/monitor)...<br>
starting monitor as
'scc/sbin/monitor 327680 '<br>
monitor: invoked as:
scc/sbin/monitor 327680<br>
RAM allocator initialised,
1612 MB (of 1628 MB)
available<br>
Spawning chips on core 1<br>
Spawning /scc/sbin/ramfsd
on core 1<br>
Spawning /scc/sbin/spawnd
on core 1<br>
Spawning /scc/sbin/startd
on core 1<br>
0 chips: client waiting
for ramfs<br>
ramfsd.1: pre-populating
from boot image...<br>
0 chips: client waiting
for ramfs<br>
ramfsd.1: ready<br>
0 chips: notifying client
about ramfs<br>
0 chips: notifying client
about ramfs<br>
kernel 1: Allocating RAM
at 0x84000000
uninitialized<br>
kernel 1: Allocating RAM
at 0x84010000
uninitialized<br>
spawnd.1: coreid 0 is arch
id 0<br>
spawnd.1: coreid 1 is arch
id 1<br>
0 chips: client waiting
for all_spawnds_up<br>
Monitor 1: booting scc
core 0 as '/scc/sbin/cpu'<br>
********* Why would core 1
want to boot core 0 ?
**************<br>
kernel 1: Allocating RAM
at 0x84020000
uninitialized<br>
kernel 1 PANIC! kernel
assertion
"rck_get_coreid() == 0"
failed at<br>
../kernel/arch/scc/rck.c:876<br>
kernel 1: exception 3
(error code 0x0):
breakpoint<br>
On behalf of: monitor<br>
Faulting instruction
pointer (or following
instruction): 0x8010a7bf
(0x<br>
10a7bf in binary)<br>
EAX 0x80118000 EBX
0x80116e88 ECX 0x0 EDX
0x805202c0 ESP 0x80920a08<br>
Top o' stack:<br>
0x8010a7bf 0x2 0x8 0x10
0x3 0x0 0x8010a7bf 0x8 0x2
0x80520180 0x80116e88<br>
0x80920a44 0x8010c612
0x80116e88 0x210d6000
0x80920a64 0x8010c64b<br>
0x801164a0 0x80114c10
0x80114b55<br>
No GDB backend<br>
--------------- OUTPUT END
------------------------------<br>
<br>
As I see it, core 1 seems
thought that it's the bsp
core (while it's not)<br>
so it's responsible to
boot other cores. But I
fail to see why core 1
would<br>
think like that.<br>
<br>
Any ideas on this? Thanks
in advance.<br>
<br>
Regards,<br>
Jinghao<br>
<br>
FYI, this is my
menu.lst.scc<br>
<br>
1 timeout 0<br>
2<br>
3 # spawnd is used to
control which cpus are
booted<br>
4 #<br>
5 # "spawnd boot" will
use the skb and pci to
figure out and<br>
6 # boot all cores in
the machine<br>
7 #<br>
8 # "spawnd boot
bootscc=1-6" will not use
the skb and<br>
9 # boot the list of
cores passed as argument.<br>
10 # The hardware id of
the cores to boot should
be specified.<br>
11 # This list may not
include the bsp core id.<br>
12<br>
13 title Barrelfish<br>
14 root (nd)<br>
15 kernel /scc/sbin/cpu
loglevel=4<br>
16 module /scc/sbin/cpu<br>
17 module /scc/sbin/init<br>
18<br>
19 # Domains spawned by
init<br>
20 module
/scc/sbin/mem_serv<br>
21 module
/scc/sbin/monitor<br>
22<br>
23 module
/scc/sbin/chips boot<br>
24 module
/scc/sbin/ramfsd boot<br>
25 module
/scc/sbin/spawnd boot
bootscc=0-1<br>
26 module
/scc/sbin/startd boot<br>
27<br>
28 #module
/scc/sbin/examples/xmpl-hello<br>
29<br>
30 # modules needed to
start the networking<br>
31 # module
/scc/sbin/eMAC core=0
device=2<br>
32 # module
/scc/sbin/netd core=0
cardname=eMAC2_0<br>
33 # module
/scc/sbin/eMAC core=1<br>
34 # module
/scc/sbin/netd core=1
cardname=eMAC2_1<br>
35<br>
36 # Test for network
throughput<br>
37 # module
/scc/sbin/netthroughput
core=1 /nfs<br>
nfs://<a href="http://10.110.4.41/shared/nfs/pravin/testfile.txt" target="_blank"><font color="red"><b>MailScanner
warning: numerical
links are often
malicious:</b></font>
10.110.4.41/shared/nfs/pravin/testfile.txt</a><br>
38<br>
39 # For webserver<br>
40 # module
/scc/sbin/webserver
core=1 eMAC2_1 10.110.4.41<br>
/shared/pravin/sw<br>
41<br>
42 # RCK memory map<br>
43 # Everything up til
VGA is private RAM (maybe
we want to throw it away)<br>
44 mmap map 0x0
0xa000 2<br>
45 # Everything after VGA
is private RAM (we also
live in this area)<br>
46 mmap map 0xe800
0x26ff1800 1<br>
47 # Shared RAM (over all
MCs) in the middle of
address space<br>
48 #mmap map 0x80000000
0x4000000 1<br>
49 mmap map
0x80000000 0x40000000
1<br>
50 # At the very end we
have some platform memory
(bootup EEPROM)<br>
51 mmap map 0xfffc0000
0x40000 2<br>
-------------- next part
--------------<br>
An HTML attachment was
scrubbed...<br>
URL: <a href="https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20120422/e2ff7982/attachment-0001.html" target="_blank">https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20120422/e2ff7982/attachment-0001.html</a><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Sun, 22 Apr 2012
11:33:52 +0200<br>
From: Stefan K?stle <<a href="mailto:stefan.kaestle@inf.ethz.ch" target="_blank">stefan.kaestle@inf.ethz.ch</a>><br>
Subject: Re:
[Barrelfish-users]
Problems when booting
Barrelfish on<br>
SCC<br>
To: <<a href="mailto:barrelfish-users@lists.inf.ethz.ch" target="_blank">barrelfish-users@lists.inf.ethz.ch</a>><br>
Message-ID: <<a href="mailto:4F93D080.6080905@inf.ethz.ch" target="_blank">4F93D080.6080905@inf.ethz.ch</a>><br>
Content-Type: text/plain;
charset="iso-8859-1"<br>
<br>
Hi,<br>
<br>
can you try replacing<br>
module /scc/sbin/spawnd
boot bootscc=0-1<br>
with<br>
module /scc/sbin/spawnd
boot bootscc=1<br>
and try it again?<br>
<br>
The boot-up of core 0 is
implicit - we do not
specify it as a spwand<br>
argument.<br>
<br>
Cheers,<br>
Stefan<br>
<br>
On 04/22/2012 11:12 AM,
Shi Jinghao (???) wrote:<br>
> Hi,<br>
><br>
> I'm trying to boot
barrelfish on SCC. I've
managed to compile the<br>
> source, get
barrelfish0.obj and <a href="http://barrelfish48.mt" target="_blank">barrelfish48.mt</a>
<<a href="http://barrelfish48.mt" target="_blank">http://barrelfish48.mt</a>>.<br>
> Then I use the
bootscc.sh to boot it. For
test, I just want to boot<br>
> core 0 and core 1,
but a weird problem<br>
> happens: core 1 is
trying to boot core 0.
Here is the output after<br>
> system start.<br>
><br>
>
----------------------OUTPUT
START
------------------------------------<br>
> Kernel starting at
address 0x80100000<br>
> hku@ubuntu:~/fish/<a href="http://hg.barrelfish.org/build$" target="_blank">hg.barrelfish.org/build$</a><br>
> <<a href="http://hg.barrelfish.org/build$" target="_blank">http://hg.barrelfish.org/build$</a>>
My APIC ID: 0<br>
> Barrelfish CPU driver
starting on scc core 0<br>
> init: invoked as:
init 2097152<br>
> Spawning memory
server
(scc/sbin/mem_serv)...<br>
> Spawning monitor
(scc/sbin/monitor)...<br>
> starting monitor as
'scc/sbin/monitor 327680 '<br>
> monitor: invoked as:
scc/sbin/monitor 327680<br>
> RAM allocator
initialised, 1612 MB (of
1628 MB) available<br>
> Spawning chips on
core 0<br>
> Spawning
/scc/sbin/ramfsd on core 0<br>
> Spawning
/scc/sbin/spawnd on core 0<br>
> Spawning
/scc/sbin/startd on core 0<br>
> 0 chips: client
waiting for ramfs<br>
> ramfsd.0:
pre-populating from boot
image...<br>
> 0 chips: client
waiting for ramfs<br>
> ramfsd.0: ready<br>
> 0 chips: notifying
client about ramfs<br>
> 0 chips: notifying
client about ramfs<br>
> kernel 0: Allocating
RAM at 0x80000000
uninitialized<br>
> kernel 0: Allocating
RAM at 0x80010000
uninitialized<br>
> spawnd.0: coreid 0 is
arch id 0<br>
> spawnd.0: coreid 1 is
arch id 1<br>
> 0 chips: client
waiting for all_spawnds_up<br>
> Monitor 0: booting
scc core 1 as
'/scc/sbin/cpu'<br>
> kernel 0: Allocating
RAM at 0x80020000
uninitialized<br>
> Kernel starting at
address 0x80100000<br>
> My APIC ID: 1<br>
> Barrelfish CPU driver
starting on scc core 1<br>
> init: invoked as:
init 2097152<br>
> Spawning memory
server
(scc/sbin/mem_serv)...<br>
> Spawning monitor
(scc/sbin/monitor)...<br>
> starting monitor as
'scc/sbin/monitor 327680 '<br>
> monitor: invoked as:
scc/sbin/monitor 327680<br>
> RAM allocator
initialised, 1612 MB (of
1628 MB) available<br>
> Spawning chips on
core 1<br>
> Spawning
/scc/sbin/ramfsd on core 1<br>
> Spawning
/scc/sbin/spawnd on core 1<br>
> Spawning
/scc/sbin/startd on core 1<br>
> 0 chips: client
waiting for ramfs<br>
> ramfsd.1:
pre-populating from boot
image...<br>
> 0 chips: client
waiting for ramfs<br>
> ramfsd.1: ready<br>
> 0 chips: notifying
client about ramfs<br>
> 0 chips: notifying
client about ramfs<br>
> kernel 1: Allocating
RAM at 0x84000000
uninitialized<br>
> kernel 1: Allocating
RAM at 0x84010000
uninitialized<br>
> spawnd.1: coreid 0 is
arch id 0<br>
> spawnd.1: coreid 1 is
arch id 1<br>
> 0 chips: client
waiting for all_spawnds_up<br>
> Monitor 1: booting
scc core 0 as
'/scc/sbin/cpu'<br>
> ********* Why would
core 1 want to boot core 0
? **************<br>
> kernel 1: Allocating
RAM at 0x84020000
uninitialized<br>
> kernel 1 PANIC!
kernel assertion
"rck_get_coreid() == 0"
failed at<br>
>
../kernel/arch/scc/rck.c:876<br>
> kernel 1: exception 3
(error code 0x0):
breakpoint<br>
> On behalf of: monitor<br>
> Faulting instruction
pointer (or following
instruction): 0x8010a7bf<br>
> (0x 10a7bf in binary)<br>
> EAX 0x80118000 EBX
0x80116e88 ECX 0x0 EDX
0x805202c0 ESP 0x80920a08<br>
> Top o' stack:<br>
> 0x8010a7bf 0x2 0x8
0x10 0x3 0x0 0x8010a7bf
0x8 0x2 0x80520180<br>
> 0x80116e88 0x80920a44
0x8010c612 0x80116e88
0x210d6000 0x80920a64<br>
> 0x8010c64b 0x801164a0
0x80114c10 0x80114b55<br>
> No GDB backend<br>
> ---------------
OUTPUT END
------------------------------<br>
><br>
> As I see it, core 1
seems thought that it's
the bsp core (while it's<br>
> not) so it's
responsible to boot other
cores. But I fail to see
why<br>
> core 1 would think
like that.<br>
><br>
> Any ideas on this?
Thanks in advance.<br>
><br>
> Regards,<br>
> Jinghao<br>
><br>
> FYI, this is my
menu.lst.scc<br>
><br>
> 1 timeout 0<br>
> 2<br>
> 3 # spawnd is used
to control which cpus are
booted<br>
> 4 #<br>
> 5 # "spawnd boot"
will use the skb and pci
to figure out and<br>
> 6 # boot all cores
in the machine<br>
> 7 #<br>
> 8 # "spawnd boot
bootscc=1-6" will not use
the skb and<br>
> 9 # boot the list
of cores passed as
argument.<br>
> 10 # The hardware id
of the cores to boot
should be specified.<br>
> 11 # This list may
not include the bsp core
id.<br>
> 12<br>
> 13 title
Barrelfish<br>
> 14 root (nd)<br>
> 15 kernel
/scc/sbin/cpu loglevel=4<br>
> 16 module
/scc/sbin/cpu<br>
> 17 module
/scc/sbin/init<br>
> 18<br>
> 19 # Domains spawned
by init<br>
> 20 module
/scc/sbin/mem_serv<br>
> 21 module
/scc/sbin/monitor<br>
> 22<br>
> 23 module
/scc/sbin/chips boot<br>
> 24 module
/scc/sbin/ramfsd boot<br>
> 25 module
/scc/sbin/spawnd boot
bootscc=0-1<br>
> 26 module
/scc/sbin/startd boot<br>
> 27<br>
> 28 #module
/scc/sbin/examples/xmpl-hello<br>
> 29<br>
> 30 # modules needed
to start the networking<br>
> 31 # module
/scc/sbin/eMAC core=0
device=2<br>
> 32 # module
/scc/sbin/netd core=0
cardname=eMAC2_0<br>
> 33 # module
/scc/sbin/eMAC core=1<br>
> 34 # module
/scc/sbin/netd core=1
cardname=eMAC2_1<br>
> 35<br>
> 36 # Test for
network throughput<br>
> 37 # module
/scc/sbin/netthroughput
core=1 /nfs<br>
> nfs://<a href="http://10.110.4.41/shared" target="_blank"><font color="red"><b>MailScanner
warning: numerical
links are often
malicious:</b></font>
10.110.4.41/shared</a>
<<a href="http://10.110.4.41/shared" target="_blank"><font color="red"><b>MailScanner
warning: numerical
links are often
malicious:</b></font>
http://10.110.4.41/shared</a>><br>
>
/nfs/pravin/testfile.txt<br>
> 38<br>
> 39 # For webserver<br>
> 40 # module
/scc/sbin/webserver
core=1 eMAC2_1 10.110.4.41<br>
> /shared/pravin/sw<br>
> 41<br>
> 42 # RCK memory map<br>
> 43 # Everything up
til VGA is private RAM
(maybe we want to throw it<br>
> away)<br>
> 44 mmap map 0x0
0xa000 2<br>
> 45 # Everything
after VGA is private RAM
(we also live in this
area)<br>
> 46 mmap map
0xe800 0x26ff1800 1<br>
> 47 # Shared RAM
(over all MCs) in the
middle of address space<br>
> 48 #mmap map
0x80000000 0x4000000 1<br>
> 49 mmap map
0x80000000 0x40000000
1<br>
> 50 # At the very end
we have some platform
memory (bootup EEPROM)<br>
> 51 mmap map
0xfffc0000 0x40000 2<br>
><br>
><br>
><br>
>
_______________________________________________<br>
> Barrelfish-users
mailing list<br>
> <a href="mailto:Barrelfish-users@lists.inf.ethz.ch" target="_blank">Barrelfish-users@lists.inf.ethz.ch</a><br>
> <a href="https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users</a><br>
-------------- next part
--------------<br>
An HTML attachment was
scrubbed...<br>
URL: <a href="https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20120422/ffc2681c/attachment.html" target="_blank">https://lists.inf.ethz.ch/pipermail/barrelfish-users/attachments/20120422/ffc2681c/attachment.html</a><br>
<br>
------------------------------<br>
<br>
_______________________________________________<br>
Barrelfish-users mailing
list<br>
<a href="mailto:Barrelfish-users@lists.inf.ethz.ch" target="_blank">Barrelfish-users@lists.inf.ethz.ch</a><br>
<a href="https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users" target="_blank">https://lists.inf.ethz.ch/mailman/listinfo/barrelfish-users</a><br>
<br>
<br>
End of Barrelfish-users
Digest, Vol 27, Issue 9<br>
***********************************************<br>
<br>
</blockquote>
</div>
<br>
</div>
</blockquote>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div>
</div>
<span><font color="#888888">
<pre cols="72">--
Stefan</pre>
</font></span></div>
</blockquote>
</div>
<br>
</div>
</blockquote>
<br>
</div></div><span><font color="#888888"><pre cols="72">--
Stefan</pre>
</font></span></div>
</blockquote></div><br></div>