Unable to boot 64bit hello

Daniel Müller <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hi,

I tried booting a 64bit hello world program on L4/Fiasco but that fails 
with a region overlap:

=============================================
xc: info: VIRTUAL MEMORY ARRANGEMENT:
   Loader:        0000000000100000->000000000019dd88
   TOTAL:         0000000000000000->000000007f800000
   ENTRY ADDRESS: 0000000000100000
xc: info: PHYSICAL MEMORY ALLOCATION:
   4KB PAGES: 0x0000000000000200
   2MB PAGES: 0x00000000000003fb
   1GB PAGES: 0x0000000000000000
Daemon running with PID 9320 net0: 00:16:3e:72:79:e5 using rtl8139 on 
PCI00:04.0 (open)
   [Link:up, TX:0 TXE:0 RX:0 RXE:0]
DHCP (net0 00:16:3e:72:79:e5)... ok
net0: 192.168.178.200/255.255.255.0 gw 192.168.178.54
Booting from PXE menu
boot
PXEBS (net0 type 128).... ok
Next server: 192.168.178.54
Filename: pxeboot.0
tftp://192.168.178.54/pxeboot.0... ok

L4 Bootstrapper
   Build: #7 Sun Jun  9 16:51:46 CEST 2013, x86-64, 4.6.3
   RAM: 0000000000000000 - 000000000009a7ff: 618kB
   RAM: 0000000000100000 - 000000007f7b9fff: 2087656kB
   Total RAM: 2039MB
   New region for list regions:        [   20d000,    4c62c9] { 2b92ca} 
Root   Module
   overlaps with:                 [   2d0080,    2e45c7] {    14548} 
Boot   bootstrap
Regions of list 'regions'
     [        0,       fff] {     1000} Arch   BIOS
     [    e0000,     fffff] {    20000} Arch   BIOS
     [   106000,    1a646f] {    a0470} Root   Module
     [   1a7000,    20c9bd] {    659be} Root   Module
     [   2d0080,    2e45c7] {    14548} Boot   bootstrap
     [  1013000,   10a8fff] {    96000} Boot   bootstrap-ptab64
     [ fc000000,  ffffffff] {  4000000} Arch   BIOS
region overlap

Key press reboots...
=============================================

Everything works for 32bit. I took a look at 
bootstrap/server/src/startup.cc. I verified that modaddr is correctly 
passed to boostrap in both cases (32 and 64bit; it is 0x2000000 
everytime). It appears that the failure happens in the call to 
add_boot_modules_region():

   /* we're just a GRUB-booted kernel! */
   add_boot_modules_region(mbi);

   if (_mod_addr)
     move_modules(mbi, _mod_addr);

I do not fully understand all this code but to me this looks like a 
logic error: first the move should happen to honor "-modaddr" and only 
then the overlap check should be done.

Here is the output for 32bit:
=============================================
L4 Bootstrapper
   Build: #3 Sun Jun  9 16:55:38 CEST 2013, x86-32, 4.6.3
   RAM: 0000000000000000 - 000000000009a7ff: 618kB
   RAM: 0000000000100000 - 000000007f7b9fff: 2087656kB
   Total RAM: 2039MB
   Moving up to 7 modules behind 2000000
   moving module 00 { 139000-1ba783 } -> { 2829000-28aa783 } [530308]
   moving module 01 { 1bb000-21015e } -> { 28ab000-290015e } [348511]
   moving module 02 { 2e5000-51f51c } -> { 2901000-2b3b51c } [2336029]
   moving module 03 { 520000-762e3b } -> { 2000000-2242e3b } [2371132]
   moving module 04 { 763000-8880c6 } -> { 2243000-23680c6 } [1200327]
   moving module 05 { 211000-211080 } -> { 2369000-2369080 } [129]
   moving module 06 { 889000-9616a6 } -> { 236a000-24426a6 } [886439]
   Scanning /fiasco -serial -serial_esc -comspeed 115200 -comport 1 -nokdb
   Scanning /sigma0
   Scanning /moe rom/hello.lua
   Bootloader MMAP:
     [        0,     9a800) RAM (1)
     [    e0000,    100000) reserved (2)
     [   100000,  7f7ba000) RAM (1)
     [ fc000000, 100000000) reserved (2)
   Relocated mbi to [0x2e0000-0x2e043f]
   Loading /fiasco
   Loading /sigma0
   Loading /moe
   find kernel info page...
   found kernel info page at 0x400000
...
=============================================

Since the module addresses are also different between the two version 
this might also be an issue with the linker scripts (and thus just luck 
that the 32bit version boots), I would guess. I am using a Xen VM for 
testing.
Any help would be appreciated.

Thanks,
Daniel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.