Re: Experimenting the vm-tz example on the Freescale i.mx6 SDB
Mahdi Aichouch <[email protected]>
| Newsgroups | gmane.comp.micro-kernel.l4.devel |
|---|---|
| Message-ID | <CAGBLRX4kW5XwskxsJqUs+cLTkdEczaPTRJsbQkSwanaz9R8sYg@mail.gmail.com> |
Hello Adam, Please find below the error code returned by the "l4_error(me->vcpu_control_ext((l4_addr_t)vcpu))" function: Thank you very much for you help. Best Regards, Mahdi 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: #4 Tue Mar 17 14:55:01 CET 2015 GIC: Switching IRQ 29 to secure 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:10067000;1008ffff] [0:10097000;10097fff] [0:1009f000;1013ffff] [4:10140000;10171fff] [0:10172000;10177fff] [4:10178000;10193fff] [0:10194000;110fffff] [4:11100000;11e8dfff] [0:11e8e000;1effffff] IOMEM:---------------------- [0:0;fffffff] [0:20000000;ffffffff] MOE: Hello world MOE: found 231100 KByte free memory MOE: found RAM from 10000000 to 1f000000 MOE: allocated 240 KByte for the page array @0x1009f000 MOE: virtual user address space [0-bfffffff] MOE: rom name space cap -> [C:501000] BOOTFS: [11100000-11119474] [C:503000] l4re BOOTFS: [1111a000-1116cc20] [C:504000] ned BOOTFS: [1116d000-112c3470] [C:505000] io BOOTFS: [112c4000-112dd65c] [C:506000] vm-tz BOOTFS: [112de000-1168df8c] [C:507000] vm-linux-image-tz BOOTFS: [1168e000-11e8e000] [C:508000] linux-initrd MOE: cmdline: moe --init=rom/vm-tz MOE: Starting: rom/vm-tz MOE: loading 'rom/vm-tz' Vmm started setup linux ok... vcp_control_ext returns -38 MOE: task 270000679 exited with 1 On Fri, Apr 10, 2015 at 5:26 PM, Mahdi Aichouch <[email protected]> wrote: > Hello Adam, > > I reduced the RAM_SIZE_MB to 256MB and it worked great! Thank you very > much! > > However, the execution went well until the call > to L4Re::chksys(me->vcpu_control_ext((l4_addr_t)vcpu)); > which generates the following error: > > terminate called after throwing an instance of 'N2L413Runtime_errorE' > > Do you have any idea of what might be wrong. > I attached the whole debug messages to this mail. > > Many thanks in advance. > > Best Regards, > Mahdi > > > On Wed, Apr 8, 2015 at 2:13 PM, Mahdi Aichouch <[email protected]> wrote: > >> Hello Adam, >> >> Thank you very much for your answer and explanation. >> >> The call to "l4sigma0_map_iomem(sigma0_cap.cap(), Ram_base, Ram_base, >> ram_size, 1)" >> failed at the first page that it tries to map. >> >> I activated the debug flags in pkg/sigma0/server/src/globals.h. >> >> And I get the debug messages include in the attached file. But based on >> the debug messages >> it is difficult to interpret what might be wrong. >> Could you please take a look at the logs in the attached file and tell >> me what do you think. >> >> Thank you again for your help. >> >> Best Regards, >> >> Mahdi >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> On Wed, Apr 1, 2015 at 11:36 AM, Mahdi Aichouch <[email protected]> >> wrote: >> >>> Hello Adam, >>> >>> I tried to do as you suggested, and I added a loop in order to map a >>> small chunk of memory at time. >>> >>> When I tried to map 1 KB at a time and 2 KB at a time, I received this >>> error from the first call to >>> l4sigma0_map_iomem ( ) function: >>> >>> ... >>> Vmm started >>> j = 0 addr = 0x0 >>> Cannot map nonsecure memory Phys, virt or size not aligned >>> ... >>> >>> Then, I tried to add 4KB at a time, and I received the same error as >>> before at the first call to >>> the l4sigma0_map_iomem ( ) function, that is: >>> >>> ... >>> Vmm started >>> j = 0 addr = 0x0 >>> Cannot map nonsecure memory No fpage received >>> ... >>> >>> >>> I also tried with 4 KB, 8 KB, 16 KB, 32 KB,... >>> I get the same error: "No fpage received" >>> >>> >>> This is the code of the loop that I added: >>> >>> int ram_size = 0x1000; //4 KB >>> >>> >>> int address = 0x0; >>> int j; >>> for(j = 0; j < 256; j++) { >>> fault = l4sigma0_map_iomem(sigma0_cap.cap(), Ram_base, Ram_base, >>> ram_size, 1); >>> printf("j = %d addr = 0x%x\n", j, address); >>> address += ram_size; >>> if (fault) { >>> printf("Cannot map nonsecure memory %s\n", >>> l4sigma0_map_errstr(fault)); >>> exit(1); >>> } >>> } >>> >>> >>> Could you please tell me what else should I check to track down the >>> source of the error. >>> Thank you very much in advance. >>> >>> Kindest regards, >>> >>> Mahdi >>> >>> PS: I attached the main.cc file of my vm-tz example. >>> >>> >>> >>> >>> >>> >>> >>> >>> On Wed, Mar 25, 2015 at 10:19 AM, Mahdi Aichouch <[email protected]> >>> wrote: >>> >>>> Hello Adam, >>>> >>>> Thank you again for your answer. >>>> >>>> Please find below the execution's log from the start of L4 kernel until >>>> the stop of the vm-tz test: >>>> >>>> L4 Bootstrapper >>>> Build: #21 Tue Mar 17 15:28:32 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 { 110a6000-110df63f } -> { 11196000-111cf63f } >>>> [235072] >>>> moving module 01 { 1109c000-110a538b } -> { 1118c000-1119538b } >>>> [37772] >>>> moving module 00 { 11044000-1109bb17 } -> { 11134000-1118bb17 } >>>> [359192] >>>> moving module 04 { 1102a000-1104365b } -> { 1111a000-1113365b } >>>> [104028] >>>> 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, 10066fff] { 65000} 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 >>>> GIC: Switching IRQ 58 to secure >>>> 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: #4 Tue Mar 17 14:55:01 CET 2015 >>>> >>>> GIC: Switching IRQ 29 to secure >>>> 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:10067000;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 1031204 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-1113365c] [C:504000] vm-tz >>>> MOE: cmdline: moe --init=rom/vm-tz >>>> MOE: Starting: rom/vm-tz >>>> MOE: loading 'rom/vm-tz' >>>> Vmm started >>>> Cannot map nonsecure memory No fpage received >>>> MOE: task 270000679 exited with 1 >>>> >>>> >>>> >>>> Kindest regards, >>>> >>>> Mahdi >>>> >>>> >>>> On Mon, Mar 23, 2015 at 11:33 AM, Mahdi Aichouch <[email protected]> >>>> wrote: >>>> >>>>> Hello Adam, >>>>> >>>>> Thank you very much for your answer! >>>>> >>>>> I configured the Ram_base to 0x20000000 for the normal-world OS and >>>>> the Ram_size to >>>>> 0x10000000 (256 MB). >>>>> >>>>> The secure world OS is loaded at 0x10000000 according to the link >>>>> address of fiasco >>>>> kernel on the i.mx6, and has 256 MB of Ram. >>>>> >>>>> When I start the vm-tz example, the reserve_area( ) method is executed >>>>> successfully, >>>>> >>>>> ... >>>>> >>>>> l4_addr_t v = Ram_base; >>>>> L4Re::chksys(env->rm()->reserve_area(&v, Ram_size, >>>>> L4Re::Rm::Reserved)); >>>>> >>>>> fault = l4sigma0_map_iomem(sigma0_cap.cap(), Ram_base, Ram_base, >>>>> Ram_size, 1); >>>>> if (fault) { >>>>> printf("Cannot map nonsecure memory: %s\n", >>>>> l4sigma0_map_errstr(fault)); >>>>> exit(1); >>>>> } >>>>> >>>>> ... >>>>> >>>>> but the l4sigma0_map_iomem( ) returns an error: >>>>> >>>>> ... >>>>> Vmm started >>>>> Cannot map nonsecure memory No fpage received >>>>> MOE: task 270000679 exited with 1 >>>>> >>>>> Then the programs stops executing, the setup_linux(vmstate) function >>>>> is not >>>>> executed, and the ATAG data structure is not copied. >>>>> >>>>> Do you have an idea of what might cause this fault. >>>>> >>>>> Thank you very much in advance. >>>>> >>>>> Best regars, >>>>> Mahdi >>>>> >>>>> >>>>> >>>>> On Fri, Mar 20, 2015 at 9:48 AM, Mahdi Aichouch <[email protected]> >>>>> wrote: >>>>> >>>>>> Hello, >>>>>> >>>>>> I am trying to test the "vm-tz", and I created a new entry in the >>>>>> "/src/l4/conf/modules.list". >>>>>> >>>>>> entry tz_vm >>>>>> roottask moe --init=rom/vm-tz >>>>>> module l4re >>>>>> module vm-tz >>>>>> >>>>>> Is my entry correct? Or there is some missing modules? >>>>>> How to know what modules should be included? >>>>>> >>>>>> Does someone has a successful running configuration. >>>>>> Is it possible to share with us a working configuration. >>>>>> >>>>>> Thank you very much in advance. >>>>>> >>>>>> Best regards, >>>>>> >>>>>> Mahdi >>>>>> >>>>>> >>>>>> >>>>>> >>>>>> On Tue, Mar 17, 2015 at 4:39 PM, Mahdi Aichouch <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> Hello, >>>>>>> >>>>>>> I was able to correct the error related to the creation of the VM, >>>>>>> by recompiling the fiasco kernel using >>>>>>> the "trustzone secure side" as an Execution Model option instead of >>>>>>> the "Standard Mode". >>>>>>> >>>>>>> Now the code goes further and it stops at >>>>>>> >>>>>>> l4sigma0_map_iomem(sigma0_cap.cap(), Ram_base, Ram_base, Ram_size, >>>>>>> 1); >>>>>>> >>>>>>> which return the following error: >>>>>>> >>>>>>> MOE: Hello world >>>>>>> MOE: found 1031204 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-1113365c] [C:504000] vm-tz >>>>>>> MOE: cmdline: moe --init=rom/vm-tz >>>>>>> MOE: Starting: rom/vm-tz >>>>>>> MOE: loading 'rom/vm-tz' >>>>>>> Vmm started >>>>>>> Cannot map nonsecure memory No fpage received >>>>>>> >>>>>>> I used the same memory parameters of the example, that is, >>>>>>> the RAM base of the non secure world is 0x20000000, and >>>>>>> the RAM size is 0x00100000. >>>>>>> >>>>>>> Could someone help me to correct this. >>>>>>> >>>>>>> Thank you very much in advance. >>>>>>> >>>>>>> Best regards, >>>>>>> Mahdi >>>>>>> >>>>>>> >>>>>>> On Tue, Mar 17, 2015 at 2:46 PM, Mahdi Aichouch <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> 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 >>>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > _______________________________________________ l4-hackers mailing list [email protected] http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers