Porting Fiasco + L4Re to Raspberry Pi 2

Alexander Weidinger alexander.weidinger at tum.de
Tue Nov 21 16:19:52 CET 2017


Hello Antoine, hello l4-hackers,

I'm currently trying to replicate the port to RPi2 for Fiasco/Genode,
which works great, until I get stuck in the boot process:

> L4 Bootstrapper                                                                 
>   Build: #7 Di 21. Nov 15:19:58 CET 2017, 5.4.0                                 
>   Scanning up to 960 MB RAM, starting at offset 32MB                            
>   Memory size is 960MB (00000000 - 3bffffff)                                    
>   RAM: 0000000000000000 - 000000003bffffff: 983040kB                            
>   Total RAM: 960MB                                                              
>   Scanning fiasco                                                               
>   Scanning sigma0                                                               
>   Scanning moe                                                                  
>   Moving up to 5 modules behind 1100000                                         
>   moving module 02 { 10ed000-111e4a3 } -> { 11de000-120f4a3 } [201892]          
>   moving module 01 { 10db000-10ec337 } -> { 11cc000-11dd337 } [70456]           
>   moving module 00 { 1053000-10da0e7 } -> { 1144000-11cb0e7 } [553192]          
>   moving module 04 { 1031000-105257b } -> { 1122000-114357b } [136572]          
>   moving module 03 { 100f000-1030467 } -> { 1100000-1121467 } [136296]          
>   Loading fiasco                                                                
>   Loading sigma0                                                                
>   Loading moe                                                                   
>   find kernel info page...                                                      
>   found kernel info page (via ELF) at 2000                                      
> Regions of list 'regions'                                                       
>     [     1000,      1a3f] {      a40} Kern   fiasco                            
>     [     2000,     96fff] {    95000} Kern   fiasco                            
>     [    97000,     970eb] {       ec} Root   mbi_rt                            
>     [    e0000,     ea9e7] {     a9e8} Sigma0 sigma0                            
>     [    f0000,     f517b] {     517c} Sigma0 sigma0                            
>     [   140000,    17c4eb] {    3c4ec} Root   moe                               
>     [  1000000,   100e523] {     e524} Boot   bootstrap                         
>     [  1100000,   1143fff] {    44000} Root   Module                            
>   found kernel options (via ELF) at 3000                                        
>   Sigma0 config    ip:000e0100 sp:00000000                                      
>   Roottask config  ip:00140254 sp:00000000                                      
>   Starting kernel fiasco at 00001200                                            
>   Non-HYP kernel detected but running in HYP mode, switching back

Sometimes (non-reproducible) additionally I get:
> [...]
> Hello from Startup::stage2

Which means stage2 comes up but hangs afterwards.
And even sometimes I am able to completely boot the device:
> [...]                                                                           
> FPU: Initialize                                                                 
> FPU0: Subarch: 2, Part: 30, Rev: 5, Var: 7, Impl: 41                            
> ARM generic timer: freq=19200000 interval=19200 cnt=36679846728534094           
> SERIAL ESC: allocated IRQ 57 for serial uart                                    
> Not using serial hack in slow timer handler.                                    
> Welcome to L4/Fiasco.OC!                                                        
> L4/Fiasco.OC microkernel on arm                                                 
> Rev: r75 compiled with gcc 5.4.0 for Broadcom 2836    []                        
> Build: #2 Tue Nov 21 15:17:05 CET 2017                                          
>                                                                                 
> Calibrating timer loop... done.                                                 
> MDB: use page size: 20                                                          
> MDB: use page size: 12                                                          
> SIGMA0: Hello!                                                                  
>   KIP @ 2000                                                                    
>   allocated 4KB for maintenance structures                                      
> SIGMA0: Dump of all resource maps                                               
> RAM:------------------------                                                    
> [0:0;fff]                                                                       
> [4:97000;97fff]                                                                 
> [0:98000;dffff]                                                                 
> [0:eb000;effff]                                                                 
> [0:f6000;13ffff]                                                                
> [4:140000;17cfff]                                                               
> [0:17d000;10fffff]                                                              
> [4:1100000;1143fff]                                                             
> [0:1144000;3affffff]                                                            
> IOMEM:----------------------                                                    
> [0:3c000000;ffffffff]                                                           
> MOE: Hello world                                                                
> MOE: found 965472 KByte free memory                                             
> MOE: found RAM from 97000 to 3b000000                                           
> MOE: allocated 943 KByte for the page array @0x17d000                           
> MOE: virtual user address space [0-bfffffff]                                    
> MOE: rom name space cap -> [C:103000]                                           
> MOE: rwfs name space cap -> [C:105000]                                          
>   BOOTFS: [1100000-1121468] [C:107000] l4re                                     
>   BOOTFS: [1122000-114357c] [C:109000] hello                                    
> MOE: cmdline: moe --init=rom/hello                                              
> MOE: Starting: rom/hello                                                        
> MOE: loading 'rom/hello'                                                        
> Hello World!

As one can see I tried to replicate this for vanilla Fiasco/L4Re (r75),
just to make sure. The same happens of course with Fiasco/Genode where
I'm also only sometimes (non-reproducible) able to completely boot the
device.

I also saw the `globalconfig.out` from the thread 'Booting L4Linux on
Raspberry Pi 2'. When using the same configuration, where you (Antoine)
were able to successfully boot the RPi2 I'm stuck with the same problem.

On the bright side, booting Fiasco/L4Re in Qemu (vers. 2.10.1) seems to
always work when using the following command to start it up:
> qemu-system-arm -M raspi2 -kernel /home/alex/Projects/foc_upstream/l4/build_rpi2/images/bootstrap.elf -nographic

If one could give me some insight on why this happens and/or how to
resolve this, I'd really appreciate it.

Regards,
Alexander

PS: Using r67, when bcm2836 wasn't introduced to Fiasco,
I'm stuck with same problem.

On 29.02.2016 11:21, Antoine DEBUT wrote:
> On Mon, 29 Feb 2016 10:59:40 +0100
> Antoine DEBUT <adebut at pactenovation.fr> wrote:
> 
>> The correct RAM size is indeed 940MB instead of 1024MB
> 
> Oops typo ! 960MB is the correct size.
> 
> Best regards,
> 



More information about the l4-hackers mailing list