Hello,
I am trying to experiment the "vm-tz" example on the Freescale i.mx6 SDB board.
At first, my goal is to understand the example, thus I am interested in running a simple test kernel instead of a full linux kernel.
Specifically, I am trying to reproduce the experimentation of the article related to the trustzone implementation on Fiasco.OC L4re, "ARM Trustzone as a Virtualization Technique in Embedded Systems". In particular, it is mentioned in the article at the "Implementation" paragraph that "Multiplexing two or more OS is supported by our design." I would like to investigate this point.
I created a new entry to generate the vm-tz binary. I added the following entry to the "src/l4/conf/modules.list" file :
entry tz_vm roottask moe --init=rom/vm-tz module l4re module vm-tz
Is my configuration entry correct, is there any missing modules that are required by the example?
I tested the binary on the board using tftp, and I obtained the following results:
L4 Bootstrapper Build: #12 Tue Mar 17 12:10:02 CET 2015, 4.8.3 20140320 (prerelease) Scanning up to 1024 MB RAM, starting at offset 32MB Memory size is 1024MB (10000000 - 4fffffff) RAM: 0000000010000000 - 000000004fffffff: 1048576kB Total RAM: 1024MB Scanning fiasco Scanning sigma0 Scanning moe Moving up to 5 modules behind 11100000 moving module 02 { 110a5000-110de63f } -> { 11195000-111ce63f } [235072] moving module 01 { 1109b000-110a438b } -> { 1118b000-1119438b } [37772] moving module 00 { 11044000-1109a0c7 } -> { 11134000-1118a0c7 } [352456] moving module 04 { 1102a000-11043597 } -> { 1111a000-11133597 } [103832] moving module 03 { 11010000-11029473 } -> { 11100000-11119473 } [103540] Loading fiasco Loading sigma0 Loading moe find kernel info page... found kernel info page at 0x10002000 Regions of list 'regions' [ 10000000, 100000e3] { e4} Root mbi_rt [ 10001000, 10001aff] { b00} Kern fiasco [ 10002000, 10062fff] { 61000} Kern fiasco [ 10090000, 10096edf] { 6ee0} Sigma0 sigma0 [ 10098000, 1009e177] { 6178} Sigma0 sigma0 [ 10140000, 10171d77] { 31d78} Root moe [ 10178000, 101934ab] { 1b4ac} Root moe [ 11000000, 1100f4ff] { f500} Boot bootstrap [ 11100000, 11133fff] { 34000} Root Module API Version: (87) experimental Sigma0 config ip:10090100 sp:00000000 Roottask config ip:10140260 sp:00000000 Starting kernel fiasco at 100012c8 Number of IRQs available at this GIC: 160 FPU0: Arch: VFPv3(3), Part: VFPv3(30), r: 4, v: 9, i: 41, t: hard, p: dbl/sngl L2: ID=410000c7 Type=9e340340 Aux=02070000 WMask=ffff S=0 L2: Type L2C-310 Size = 1024kB Ways=16 Waysize=64 SERIAL ESC: allocated IRQ 58 for serial uart Not using serial hack in slow timer handler. Welcome to Fiasco.OC (arm)! L4/Fiasco.OC arm microkernel (C) 1998-2013 TU Dresden Rev: rexported compiled with gcc 4.8.3 for i.MX6 [] Build: #3 Wed Mar 11 16:43:41 CET 2015
Calibrating timer loop... done. MDB: use page size: 20 MDB: use page size: 12 SIGMA0: Hello! KIP @ 10002000 allocated 4KB for maintenance structures SIGMA0: Dump of all resource maps RAM:------------------------ [4:10000000;10000fff] [0:10063000;1008ffff] [0:10097000;10097fff] [0:1009f000;1013ffff] [4:10140000;10171fff] [0:10172000;10177fff] [4:10178000;10193fff] [0:10194000;110fffff] [4:11100000;11133fff] [0:11134000;4effffff] IOMEM:---------------------- [0:0;fffffff] [0:50000000;ffffffff] MOE: Hello world MOE: found 1031220 KByte free memory MOE: found RAM from 10000000 to 4f000000 MOE: allocated 1008 KByte for the page array @0x10194000 MOE: virtual user address space [0-bfffffff] MOE: rom name space cap -> [C:501000] BOOTFS: [11100000-11119474] [C:503000] l4re BOOTFS: [1111a000-11133598] [C:504000] vm-tz MOE: cmdline: moe --init=rom/vm-tz MOE: Starting: rom/vm-tz MOE: loading 'rom/vm-tz' Vmm started terminate called after throwing an instance of 'N2L413Runtime_errorE' MOE: task 270000679 exited with 127
The code stops at the beginning when it tries to create a VM :
L4Re::chksys(env->factory()->create_vm(vm));
After reading through the code, I saw that the code example is expecting a linux-image and an initrd to be provided. Is it possible to tell me where these should be added in the build directory? In my test case, the linux-image will be replaced by a simple kernel image.
Could someone help me to correct my test case.
Many thanks in advance.
Best regards, Mahdi