Re: How to enable Guest Linux VM on Raspberry PI3?
Adam Lackorzynski <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <[email protected]> |
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; [email protected] > 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@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 [[email protected]] on behalf of Adam Lackorzynski [[email protected]] > Sent: Thursday, June 13, 2019 11:43 AM > To: [email protected] > 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; [email protected] > > 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; [email protected] > > 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 [[email protected]] on behalf of Adam Lackorzynski [[email protected]] > > Sent: Friday, June 07, 2019 3:54 PM > > To: [email protected] > > 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@20000 failed. Disabling device. > > > VMM[]: [email protected],virtiocap: capability net is invalid. > > > VMM[vm]: Device creation for virtual device virtio_net@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 > > > [email protected] > > > 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 > > [email protected] > > 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 > > [email protected] > > 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 [email protected] > 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 > [email protected] > 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 > [email protected] > http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers Adam -- Adam [email protected] Lackorzynski http://os.inf.tu-dresden.de/~adam/