How to enable Guest Linux VM on Raspberry PI3?

Lei Zhou lezhou at blackberry.com
Thu Jun 13 02:35:26 CEST 2019


I put in some printf(...)  into ../pkg/ned/src/lua.cc for debugging.

the exception seems throwing out from following function:
lua.cc ---> int lua(....) ---->
=================================
  for (int i = 0; libs[i].func; ++i)                                            
    {                                                                           
      printf("Ned says: Hi World! %s 021\n", libs[i].name);                     
      luaL_requiref(L, libs[i].name, libs[i].func, 1);                          
      lua_pop(L, 1);                                                            
    }                                                                           
                                                                                
  printf("Ned says: Hi World! leizhou 01\n"); 
===========================================

When it's loading "package" library by invoking this function, it raises this exception.

LUAMOD_API int luaopen_package (lua_State *L) {                                 
  createclibstable(L);                                                          
  luaL_newlib(L, pk_funcs);  /* create 'package' table */                       
  createsearcherstable(L);                                                      
  /* set field 'path' */                                                        
  setpath(L, "path", LUA_PATHVARVERSION, LUA_PATH_VAR, LUA_PATH_DEFAULT);       
  /* set field 'cpath' */                                                       
  setpath(L, "cpath", LUA_CPATHVARVERSION, LUA_CPATH_VAR, LUA_CPATH_DEFAULT);   
  /* store config information */                                                
  lua_pushliteral(L, LUA_DIRSEP "\n" LUA_PATH_SEP "\n" LUA_PATH_MARK "\n"       
                     LUA_EXEC_DIR "\n" LUA_IGMARK "\n");                        
  lua_setfield(L, -2, "config");                                                
  /* set field 'loaded' */                                                      
  luaL_getsubtable(L, LUA_REGISTRYINDEX, "_LOADED");                            
  lua_setfield(L, -2, "loaded");                                                
  /* set field 'preload' */                                                     
  luaL_getsubtable(L, LUA_REGISTRYINDEX, "_PRELOAD");                           
  lua_setfield(L, -2, "preload");                                               
  lua_pushglobaltable(L);                                                       
  lua_pushvalue(L, -2);  /* set 'package' as upvalue for next lib */            
  luaL_setfuncs(L, ll_funcs, 1);  /* open lib into global table */              
  lua_pop(L, 1);  /* pop global table */                                        
  return 1;  /* return 'package' table */                                       
}   

Any hints would be greatly appreciated!
Lei


________________________________________
From: Lei Zhou
Sent: Tuesday, June 11, 2019 7:10 PM
To: Adam Lackorzynski; l4-hackers at os.inf.tu-dresden.de
Subject: RE: How to enable Guest Linux VM on Raspberry PI3?

Hi Adam,

I built Fiasco/L4Re and L4Linux vmlinuz, my own ramdisk-armv7.cpio.gz.

This is my l4linux.cfg content:
==============================================
-- vim:set ft=lua:

local L4 = require("L4");

L4.default_loader:start({ log = L4.Env.log:m("rws"), },
                        "rom/vmlinuz mem=64M console=ttyLv0 " ..
                        "l4x_rd=rom/ramdisk-armv7.cpio.gz" ..  L4.Info.arch() .. ".rd "
                        .. "root=1:0 ramdisk_size=4000 init=/bin/sh");
=====================================================
This is my module.list:

entry L4Linux-rpi3
roottask moe rom/l4linux.cfg
module l4linux.cfg
module l4re
module ned
module vmlinuz
module ramdisk-armv7.cpio.gz
=======================================================

I made final bootstrap_L4Linux-rpi3.uimage.

=====================================================

After Rpi3 booted up, it stopped at NED exception and hangs!  And log is pasted as below:

[0:20000000;ffffffff]
MOE: Hello world
MOE: found 501008 KByte free memory
MOE: found RAM from 54000 to 1f000000
MOE: allocated 495 KByte for the page array @0x55000
MOE: virtual user address space [0-bfffffff]
MOE: rom name space cap -> [C:103000]
MOE: rwfs name space cap -> [C:105000]
  BOOTFS: [1100000-1100147] [C:107000] l4linux.cfg
  BOOTFS: [1101000-11164f0] [C:109000] l4re
  BOOTFS: [1117000-117876c] [C:10b000] ned
  BOOTFS: [1179000-15ac4d0] [C:10d000] vmlinuz
  BOOTFS: [15ad000-1717400] [C:10f000] ramdisk-armv7.cpio.gz
MOE: cmdline: moe rom/l4linux.cfg
MOE: Starting: rom/ned rom/l4linux.cfg
MOE: loading 'rom/ned'
Ned says: Hi World!
L4Re: rom/ned: Unhandled exception: PC=0x102cb30 PFA=20a960 LdrFlgs=0
========================================================

$arm-***-objdump -ldSC ned   // gives following disassembly at above PC:

 102cb1c:       e1a00004        mov     r0, r4
 102cb20:       e34f1ff0        movt    r1, #65520      ; 0xfff0
 102cb24:       e30c825c        movw    r8, #49756      ; 0xc25c
 102cb28:       ebffa155        bl      1015084 <lua_rawsetp(lua_State*, int, void const*)>
 102cb2c:       ed9f0b71        vldr    d0, [pc, #452]  ; 102ccf8 <luaopen_package(lua_State*)+0x24c>
 102cb30:       e1a00004        mov     r0, r4
 102cb34:       e3a01088        mov     r1, #136        ; 0x88
 102cb38:       e3406102        movt    r6, #258        ; 0x102
 102cb3c:       ebffe4f1        bl      1025f08 <luaL_checkversion_(lua_State*, double, unsigned int)>
=====================================================

Can you please help me?  or get me familiar with how to debug on the L4Re system?

Much appreciated!
Lei





________________________________________
From: Lei Zhou
Sent: Friday, June 07, 2019 5:34 PM
To: Adam Lackorzynski; l4-hackers at os.inf.tu-dresden.de
Subject: RE: How to enable Guest Linux VM on Raspberry PI3?

Thanks Adam & Jakub for your promptly support.

1>  I will experiment L4Linux on my Raspberry PI3 to get guest Linux VM up.
2>  Yes, after I sycned to lastest <kernkonzept> code base and was able to make Linux VM upworking on the QEMU virtual ARM platform.   Was using the source code from https://svn.l4re.org/repos/oc/l4re/.   Seems they are not exactly the same.

Have a great weekend!

Lei
________________________________________
From: l4-hackers [l4-hackers-bounces at os.inf.tu-dresden.de] on behalf of Adam Lackorzynski [adam at os.inf.tu-dresden.de]
Sent: Friday, June 07, 2019 3:54 PM
To: l4-hackers at os.inf.tu-dresden.de
Subject: Re: How to enable Guest Linux VM on Raspberry PI3?

On Fri Jun 07, 2019 at 18:27:18 +0000, Lei Zhou wrote:
> After I brought up L4Re and Fiasco on Raspberry PI3,  would like to enable guest Linux VM on top of it.
>
> I'm looking at the link https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_kernkonzept_manifest_wiki_LinuxVM&d=DwICAg&c=yzoHOc_ZK-sxl-kfGNSEvlJYanssXN3q-lhj0sp26wE&r=zgPsMwBitHoKyTzLULGKGmtjlsV9d0M7_KqUo-WYeMg&m=VXUaQ18nPG5EFxWsPyMuOEWiVIUJi6NK5XgzyKn7IqM&s=2xhsd-rfRCHenVuPfjY7zmNW0FLbQ0Da6Io2gb_UuD4&e= and hoping I can do the same thing on Raspberry PI3.
>
> The link seems using hardware-assisted virtualization option uvmm based for guest VM.     There seems also L4Linux Paravirtualization option.    Which option should I use for me to enable guest LInux  VM on Raspberry PI3?

You can only use L4Linux as the Raspberries do not support
hardware-assisted virtualization (because they have the wrong interrupt
controller).


Adam

> In addition,  when I followed the link to try on QEMU first,   encounter some "vbus" capability issue.   I followed the guidance exactly as the link says.   However,   when I started the command to spawning the Linux VM as:
>          $make E=uvmm-basic qemu
>
> It failed with following log:
>
> ============================================
> MOE: virtual user address space [0-7fffffffff]
> MOE: rom name space cap -> [C:103000]
> MOE: rwfs name space cap -> [C:105000]
>   BOOTFS: [41100000-411974b8] [C:107000] uvmm
>   BOOTFS: [41198000-411c4e58] [C:109000] l4re
>   BOOTFS: [411c5000-41246770] [C:10b000] ned
>   BOOTFS: [41247000-412475c4] [C:10d000] virt-arm_virt.dtb
>   BOOTFS: [41248000-41430200] [C:10f000] ramdisk-armv8.cpio.gz
>   BOOTFS: [41431000-41431242] [C:111000] uvmm-basic.ned
>   BOOTFS: [41432000-42618a00] [C:113000] Image.gz
> MOE: cmdline: moe rom/uvmm-basic.ned
> MOE: Starting: rom/ned rom/uvmm-basic.ned
> MOE: loading 'rom/ned'
> Ned says: Hi World!
> Ned: loading file: 'rom/uvmm-basic.ned'
> VMM[vmbus]: 'vbus' capability not found. Hardware access not possible for VM.
> VMM[main]: Hello out there.
> VMM: FATAL: ERROR: ARM GIC virtualization does not work without passing the virtual GICC via the vbus
> VMM[vm]: Device creation for virtual device virtio_uart at 20000 failed. Disabling device.
> VMM[]: virtio_net at 10000.l4vmm,virtiocap: capability net is invalid.
> VMM[vm]: Device creation for virtual device virtio_net at 10000 failed. Disabling device.
> VMM: FATAL: ERROR: ARM GIC virtualization does not work without passing the virtual GICC via the vbus
> VMM[vm]: Device creation for virtual device interrupt-controller failed. Disabling device.
> VMM: FATAL: Parsing timer interrupt: Argument out of range
> qemu-system-aarch64: terminating on signal 2
> Makefile:6: recipe for target 'do-all-make-goals' failed
> make: *** [do-all-make-goals] Interrupt
> =========================================================================
>
> Any feedbacks are greatly appreciated!
> Lei Zhou
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
> https://urldefense.proofpoint.com/v2/url?u=http-3A__os.inf.tu-2Ddresden.de_mailman_listinfo_l4-2Dhackers&d=DwICAg&c=yzoHOc_ZK-sxl-kfGNSEvlJYanssXN3q-lhj0sp26wE&r=zgPsMwBitHoKyTzLULGKGmtjlsV9d0M7_KqUo-WYeMg&m=VXUaQ18nPG5EFxWsPyMuOEWiVIUJi6NK5XgzyKn7IqM&s=aHoTBnTfuPAa7iXROnGw4Zd7uV_Id7cYJn496JQlMhQ&e=

_______________________________________________
l4-hackers mailing list
l4-hackers at os.inf.tu-dresden.de
https://urldefense.proofpoint.com/v2/url?u=http-3A__os.inf.tu-2Ddresden.de_mailman_listinfo_l4-2Dhackers&d=DwICAg&c=yzoHOc_ZK-sxl-kfGNSEvlJYanssXN3q-lhj0sp26wE&r=zgPsMwBitHoKyTzLULGKGmtjlsV9d0M7_KqUo-WYeMg&m=VXUaQ18nPG5EFxWsPyMuOEWiVIUJi6NK5XgzyKn7IqM&s=aHoTBnTfuPAa7iXROnGw4Zd7uV_Id7cYJn496JQlMhQ&e=




More information about the l4-hackers mailing list