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@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@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@os.inf.tu-dresden.de] on behalf of Adam Lackorzynski [adam@os.inf.tu-dresden.de] Sent: Friday, June 07, 2019 3:54 PM To: l4-hackers@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_... 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[]: virtio_net@10000.l4vmm,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 l4-hackers@os.inf.tu-dresden.de https://urldefense.proofpoint.com/v2/url?u=http-3A__os.inf.tu-2Ddresden.de_m...
_______________________________________________ l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de https://urldefense.proofpoint.com/v2/url?u=http-3A__os.inf.tu-2Ddresden.de_m...