How to enable Guest Linux VM on Raspberry PI3?

Adam Lackorzynski adam at os.inf.tu-dresden.de
Mon Jun 17 00:11:56 CEST 2019


Hi,

but this also indicates that you did not configure L4Linux for ARMv6 or
v7, as with those there would not be a swp instruction in the code
I believe. For the rpi3 v7 should be selected.

Adam

On Thu Jun 13, 2019 at 20:58:58 +0000, Lei Zhou wrote:
> Never mind and figured out the problem by googling.   Need enable "CONFIG_SWP_EMULATE"  --- Emulate SWP/SWPB instructions when configuring the L4Linux.
> 
> Linux VM is up running on Rpi 3 and will enable other use cases further on Rpi 3.
> 
> Thanks,
> Lei. 
> 
> 
> ________________________________________
> From: Lei Zhou
> Sent: Thursday, June 13, 2019 12:24 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, much appreciated!    by enabling the FPU fixes the exception.
> 
> After I rebuilt the Fiasco and Rpi *.uimage,  the logging moves further until the following error:
> 
> =================================================
> Starting binary at 0x3000268, argc=7 argv=0xafff4f8c *argv=0xb1007ff4 argv0=romz
> External resolver is at 0xa8000b48
> ======> L4Linux starting... <========
> Linux version 4.19.0-l4-svn63 (lezhou at CI0700000004358) (gcc version 7.4.1 201819
> Binary name: rom/vmlinuz
>    This is an AEABI build.
> Linux kernel command line (6 args): mem=64M console=ttyLv0l4x_rd=rom/ramdisk-ar1
> CPU mapping (l:p)[1]: 0:0
> Image: 03000000 - 03600000 [6144 KiB].
> Areas: Text:     03000000 - 03305000 [3092kB]
>        RO-Data:  03305000 - 033a8000 [652kB]
>        Data:     033e2000 - 034130f4 [196kB]
>        Init:     033be000 - 033e2000 [144kB]
>        BSS:      034130f4 - 0349a000 [539kB]
> Device scan:
> Device scan done.
> l4lx_thread_create: Created thread 41a (cpu0) (u:b3000e00, v:b3000c00, sp:033e3)
> main thread will be 41a
> L4x: section-with-init(-data): Virt: 0x3000000 to 0x3499fff [4712 KiB]
> L4x: section-with-init-text: Virt: 0x3000000 to 0x3499fff [4712 KiB]
> L4x:            data: Virt: 0x3000000 to 0x3499fff [4712 KiB]
> L4x: Main thread running, waiting...
> L4x: Memory size: 64MB
> L4x: Setting superpages for main memory
> L4x: Adjusted memory start: 03000000
> L4x:     Main memory: Virt: 0x3600000 to 0x75fffff [65536 KiB]
> L4x: vmalloc area: 07600000 - 0f600000
> L4x:            text: Virt: 0x3000000 to 0x3499fff [4712 KiB]
> Loading: rom/ramdisk-arm.rd
> INITRD: Size of RAMdisk is 1449KiB
> RAMdisk from 00002000 to 0016c400 [1449KiB]
> l4lx_thread_create: Created thread 41f (timer0) (u:b3000a00, v:00000000, sp:034)
> 'swp(b)' instruction at 03051d28 and faulting.
> Linux built for the wrong ARM version?
> 'swp(b)' instruction at 031b3604 and faulting.
> Linux built for the wrong ARM version?
> 'swp(b)' instruction at 031b3604 and faulting.
> .............................................................
> 
> Any comments?
> 
> Thanks again,
> 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: Thursday, June 13, 2019 11:43 AM
> To: l4-hackers at os.inf.tu-dresden.de
> Subject: Re: How to enable Guest Linux VM on Raspberry PI3?
> 
> Hi,
> 
> you're hitting a floating point intruction. Do you have FPU support
> enabled in Fiasco?
> 
> Adam
> 
> On Thu Jun 13, 2019 at 00:35:26 +0000, Lei Zhou wrote:
> > 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://urldefense.proofpoint.com/v2/url?u=https-3A__svn.l4re.org_repos_oc_l4re_&d=DwICAg&c=yzoHOc_ZK-sxl-kfGNSEvlJYanssXN3q-lhj0sp26wE&r=zgPsMwBitHoKyTzLULGKGmtjlsV9d0M7_KqUo-WYeMg&m=bnG243Q2Lb_ZjxPrdZJVO6GvYVCoSJhuyPi9ckeJGMY&s=6t5kzqj_gCHyvmjQdJ-hH5EJK98k_vVUdcG5SrfnpeY&e=.   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=
> >
> > _______________________________________________
> > 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=bnG243Q2Lb_ZjxPrdZJVO6GvYVCoSJhuyPi9ckeJGMY&s=qmeVpwwUl_xj7ezphMfPOQwV4092nOOtkEoSXxk90mM&e=
> 
> Adam
> --
> Adam                 adam at os.inf.tu-dresden.de
>   Lackorzynski         https://urldefense.proofpoint.com/v2/url?u=http-3A__os.inf.tu-2Ddresden.de_-7Eadam_&d=DwICAg&c=yzoHOc_ZK-sxl-kfGNSEvlJYanssXN3q-lhj0sp26wE&r=zgPsMwBitHoKyTzLULGKGmtjlsV9d0M7_KqUo-WYeMg&m=bnG243Q2Lb_ZjxPrdZJVO6GvYVCoSJhuyPi9ckeJGMY&s=oA8TiWOiLylVWTE4wZaU4gPT3-8Sw7Afr_j6SqRHSCI&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=bnG243Q2Lb_ZjxPrdZJVO6GvYVCoSJhuyPi9ckeJGMY&s=qmeVpwwUl_xj7ezphMfPOQwV4092nOOtkEoSXxk90mM&e=
> 
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers

Adam
-- 
Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/




More information about the l4-hackers mailing list