Virtualization with trustzone into mx53
panton
panton at ...215...
Mon Dec 9 16:31:22 CET 2013
Hi,
I am a little confused about creating a share memory between a Non
Secure and Secure worlds. As far as I understood, memory region should
be placed in Non Secure Side (Linux in tz_vmm example), when a change of
context is done you can send the addresses of that regions using cpu
registers and looking into vm_state struct. Then, from Secure side must
be a method to access to that region but I do not find the good way to
configure Genode to perform that access. Is there any example of how
that works?
Regards,
Pablo Anton.
El 02.12.2013 16:19, Stefan Kalkowski escribió:
> Hi,
>
> On 12/02/2013 03:48 PM, panton wrote:
>> Hi Stefan,
>>
>> I know this is not a question about genode but I am having troubles
>> compiling linux image for tz-vmm. Did you use genode toolchain?? Could
>> I
>> ask you the config options file you used for compiling (I was not able
>> to get it from linux image)??
>
> I didn't used the Genode toolchain, but the Codesourcery ARM cross
> compiler for Linux (Sourcery G++ Lite 2009q1-203). As the Genode
> toolchain isn't used to compile a Linux system, it misses certain
> defines you need when compiling the Linux kernel.
>
> The adapted kernel configuration file is part of the Linux fork I've
> mentioned in my previous mail. Here is the concrete file:
>
> https://github.com/skalk/linux/blob/imx53-tz/arch/arm/configs/imx5_android_tz_defconfig
>
> Regards
> Stefan
>
>>
>> Thanks you in advance.
>>
>> Best regards.
>> Pablo Anton.
>>
>> El 28.11.2013 11:07, Stefan Kalkowski escribió:
>>> Hi Pablo,
>>>
>>> On 11/28/2013 10:52 AM, panton wrote:
>>>> Hi Stefan,
>>>>
>>>> Thank you very much for your detailed explication. I am really lucky
>>>> beacause it seems you are working right now on that matter (last
>>>> genode/staging branch update was yesterday :)).
>>>>
>>>>> well, this depends. There are trustzone.cc files for different
>>>>> platforms/configurations. In general, that file only contains
>>>>> additional
>>>>> kernel initialization routines needed. For instance, configuring
>>>>> IRQs
>>>>> to
>>>>> be "secure", or "non-secure", or configure TrustZone specific
>>>>> devices
>>>>> that can be configured in supervisor mode only.
>>>>> For configurations where no TrustZone is supported, or used that
>>>>> file
>>>>> contains an empty initialization indeed. I assume you've found that
>>>>> file.
>>>>
>>>> Now I am able to see files on ./base-hw/src/core/imx53/trustzone.
>>>>
>>>>> To sum it up, the non-secure guest has to behave cooperatively, or
>>>>> it
>>>>> will fail. Trap-and-emulate doesn't work in general. Therefore,
>>>>> some
>>>>> lightweight form of para-virtualization of the guest OS is needed.
>>>>
>>>> So, I assume the linux image on
>>>> http://genode.org/files/images/imx53_qsb/linux_trustzone.bin is not
>>>> a
>>>> normal linux image for imx53_loco but neither a L4Linux (since the
>>>> example is running without Fiasco.OC). Is there any repository where
>>>> we
>>>> could take that linux code?
>>>>
>>>
>>> Sure, branches including the changes for Versatile Express, and
>>> i.MX53
>>> QSB/Tablet can be found on Github too:
>>>
>>> git at ...116...:skalk/linux.git
>>>
>>> The branches are titled 'vexpress-tz', and 'imx53-tz'
>>>
>>>>
>>>> About the example I only can say "Great work".
>>>
>>> Thanks, that's music to my ears.
>>>
>>>> I was able to run it on
>>>> hardware. Some little details that could help people:
>>>>
>>>>> After that, do a 'make run/tz_vmm' in the build directory. The
>>>>> resulting
>>>>> image is located in 'var/run/tz_vmm/uImage'
>>>>
>>>> The resulting image is on elf, if you want to run it with uboot you
>>>> should create a valid uImage using mkimage tool.
>>>>
>>>
>>> If you add a '--target uboot' to the RUN_OPT environment variable,
>>> the
>>> uImage is built automatically. Just add the following to your
>>> 'etc/build.conf' (I've missed that in the previous mail):
>>>
>>> RUN_OPT = --target uboot
>>>
>>>> Now, I go to play!
>>>
>>> Good luck, and
>>> best regards
>>> Stefan
>>>
>>>>
>>>> Best regards
>>>> Pablo Antón.
>>>>
>>>>
>>>> El 27.11.2013 22:47, Stefan Kalkowski escribió:
>>>>> Hi Pablo,
>>>>>
>>>>> On 11/26/2013 06:11 PM, panton wrote:
>>>>>> Hello,
>>>>>>
>>>>>> I want to create a virtualized system with Genode in my imx53
>>>>>> board.
>>>>>> At
>>>>>> the moment, I am able to run Genode on the board with base-foc and
>>>>>> also
>>>>>> directly on hardware (base-hw). Thus, my plan was to run a linux
>>>>>> kernel
>>>>>> as a child node and hopefully run it into trustzone NS. Looking
>>>>>> into
>>>>>> Genode code I found base-hw/include/vm_session that seems to deal
>>>>>> with
>>>>>> virtualization. Furthermore there is a trustzone.cc into
>>>>>> base-hw/src/core.., but without real useful code.
>>>>>
>>>>> well, this depends. There are trustzone.cc files for different
>>>>> platforms/configurations. In general, that file only contains
>>>>> additional
>>>>> kernel initialization routines needed. For instance, configuring
>>>>> IRQs
>>>>> to
>>>>> be "secure", or "non-secure", or configure TrustZone specific
>>>>> devices
>>>>> that can be configured in supervisor mode only.
>>>>> For configurations where no TrustZone is supported, or used that
>>>>> file
>>>>> contains an empty initialization indeed. I assume you've found that
>>>>> file.
>>>>>
>>>>>>
>>>>>> I was wondering if there are implemented virtualization
>>>>>> capabilities
>>>>>> using trustzone or even without trustzone?
>>>>>
>>>>> In fact, there is some kind of virtualization support using
>>>>> TrustZone.
>>>>> Although, TrustZone isn't designed to be a virtualization solution.
>>>>> Therefore, the "guest" needs to be aware what devices it is allowed
>>>>> to
>>>>> use. In contrast to the CPU (including MMU, Caches, etc.), there is
>>>>> no
>>>>> support to virtualize physical memory (including memory mapped I/O)
>>>>> for
>>>>> the non-secure "guest". That means guest physical addresses are in
>>>>> fact
>>>>> physical addresses. Dependent on the concrete platform, it might be
>>>>> possible to deny non-secure access to certain physical memory
>>>>> regions,
>>>>> like I/O memory of certain devices, and then use a trap-emulate
>>>>> approach. But in general this approach isn't guaranteed to work.
>>>>> Dependent on where the unit, which controls peripheral device
>>>>> memory
>>>>> (if
>>>>> existent at all), is located in the bus hierarchy of the SoC, it
>>>>> might
>>>>> provoke asynchronous external data-aborts in the CPU core, instead
>>>>> of
>>>>> synchronous ones. Thereby, it is impossible to recover the state,
>>>>> in
>>>>> which the protection fault was raised.
>>>>> To sum it up, the non-secure guest has to behave cooperatively, or
>>>>> it
>>>>> will fail. Trap-and-emulate doesn't work in general. Therefore,
>>>>> some
>>>>> lightweight form of para-virtualization of the guest OS is needed.
>>>>>
>>>>> On ARM platforms, apart from the TrustZone "virtualization", Genode
>>>>> includes support of L4Linux, a para-virtualized Linux for the
>>>>> Fiasco.OC
>>>>> kernel. ARM's virtualization extensions aren't supported yet, but
>>>>> we'll
>>>>> investigate it certainly.
>>>>>
>>>>>> If so, it would be great to
>>>>>> have an example of how to use it.
>>>>>
>>>>> A working basic example is available on Genode's current staging
>>>>> branch,
>>>>> and will be available in Genode's upcoming release 13.11, that will
>>>>> be
>>>>> announced this week.
>>>>> The example should work out of the box for ARM's Versatile Express
>>>>> Coretile A9x4, and Freescale's i.MX53 Quickstart board. You'll have
>>>>> to
>>>>> create a build directory for 'hw_imx53'. After creating the build
>>>>> directory, you've to adapt the 'etc/specs.conf' file, and add the
>>>>> following SPEC variable:
>>>>>
>>>>> SPECS += trustzone
>>>>>
>>>>> After that, do a 'make run/tz_vmm' in the build directory. The
>>>>> resulting
>>>>> image is located in 'var/run/tz_vmm/uImage'. The example scenario
>>>>> starts
>>>>> Genode's hw kernel, core, init, and the virtual machine monitor,
>>>>> which
>>>>> will boot Linux with a small busybox initramfs on the non-secure
>>>>> side.
>>>>>
>>>>> A more sophisticated example, which runs on the i.MX53 SABRE tablet
>>>>> only, can be found on this topic branch:
>>>>>
>>>>> https://github.com/skalk/genode/tree/i.MX53_tablet_demo
>>>>>
>>>>> That example include virtual touchscreen support for the non-secure
>>>>> guest, so that you can interact with the secure Genode system, and
>>>>> the
>>>>> non-secure Android guest side-by-side.
>>>>>
>>>>>>
>>>>>> Thanks in advance for answers!
>>>>>
>>>>> You're welcome.
>>>>>
>>>>> Best Regards
>>>>> Stefan
>>>>>
>>>>>>
>>>>>> Best regards,
>>>>>> Pablo Anton
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Rapidly troubleshoot problems before they affect your business.
>>>>>> Most
>>>>>> IT
>>>>>> organizations don't have a clear picture of how application
>>>>>> performance
>>>>>> affects their revenue. With AppDynamics, you get 100% visibility
>>>>>> into
>>>>>> your
>>>>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>>>>> AppDynamics Pro!
>>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>>>>>> _______________________________________________
>>>>>> Genode-main mailing list
>>>>>> Genode-main at lists.sourceforge.net
>>>>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>>>>
>>>>>
>>>>> --
>>>>> Stefan Kalkowski
>>>>> Genode Labs
>>>>>
>>>>> http://www.genode-labs.com/ · http://genode.org/
>>>>>
>>>>> ------------------------------------------------------------------------------
>>>>> Rapidly troubleshoot problems before they affect your business.
>>>>> Most
>>>>> IT
>>>>> organizations don't have a clear picture of how application
>>>>> performance
>>>>> affects their revenue. With AppDynamics, you get 100% visibility
>>>>> into
>>>>> your
>>>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>>>> AppDynamics Pro!
>>>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>>>>> _______________________________________________
>>>>> Genode-main mailing list
>>>>> Genode-main at lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>>
>>>> ------------------------------------------------------------------------------
>>>> Rapidly troubleshoot problems before they affect your business. Most
>>>> IT
>>>> organizations don't have a clear picture of how application
>>>> performance
>>>> affects their revenue. With AppDynamics, you get 100% visibility
>>>> into
>>>> your
>>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>>> AppDynamics Pro!
>>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>>>> _______________________________________________
>>>> Genode-main mailing list
>>>> Genode-main at lists.sourceforge.net
>>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>>>
>>>
>>> --
>>> Stefan Kalkowski
>>> Genode Labs
>>>
>>> http://www.genode-labs.com/ · http://genode.org/
>>>
>>> ------------------------------------------------------------------------------
>>> Rapidly troubleshoot problems before they affect your business. Most
>>> IT
>>> organizations don't have a clear picture of how application
>>> performance
>>> affects their revenue. With AppDynamics, you get 100% visibility into
>>> your
>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>> AppDynamics Pro!
>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> Genode-main mailing list
>>> Genode-main at lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>
>> ------------------------------------------------------------------------------
>> Rapidly troubleshoot problems before they affect your business. Most
>> IT
>> organizations don't have a clear picture of how application
>> performance
>> affects their revenue. With AppDynamics, you get 100% visibility into
>> your
>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>> AppDynamics Pro!
>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>> _______________________________________________
>> Genode-main mailing list
>> Genode-main at lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/genode-main
>>
>
> --
> Stefan Kalkowski
> Genode Labs
>
> http://www.genode-labs.com/ · http://genode.org/
>
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into
> your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
> AppDynamics Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
> _______________________________________________
> Genode-main mailing list
> Genode-main at lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/genode-main
More information about the users
mailing list