[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] Questions about XEN/ARM toolchain, XEN 4.5, Exynos 5420 and Arndale Octaboard.



Hello,

I am a Computer Engineering student, currently working on building a toolchain to have Xen running on ARM embedded platforms.Â

I have an Arndale Octa Board (Samsung Exynos 5420 MPSoC) and I am trying to run Xen 4.5 on it.

Â

I followed all the steps written in the Wiki (http://wiki.xen.org/wiki/Xen_ARM_with_Virtualization_Extensions/Arndale) as guideline and the following discussions about the Octaboard:Â
[1] -Âhttp://xen.markmail.org/thread/3shxyiipnq2ewj2k
[2] -Âhttp://markmail.org/thread/dhiknm25xfbsrlo6

I have successfully enabled the early_printk feature of Xen for the Exynos 5420 [1], so that I could have the following debug messages on Xen booting:

----------------------------------------------------
Starting kernel ...

- UART enabled -
- CPU 00000000 booting -
- Xen must be entered in NS Hyp mode -
- Boot failed -
----------------------------------------------------

The problem is that Xen does not match the correct CPU mode for its boot. For this reason I started working on the booting process, trying to deeply understand how it works for this board.Â

Â

The board utilizes a secure multi stages booting process (chain of trust), having 4 different boot levels (BL#):

- BL0 runs on iROM, vendor fused.
- BL1 runs on iRAM, vendor provided.
- BL2 runs on memory, signed.
- BL3 is U-Boot and the only one working seems to be a signed 2012.07 version.

As far as I know, the booting processor loads Xen while in Non-Secure state andÂSupervisor mode (NS SVC), failing its boot and generating the above debug messages. To bring the processor in Hypervisor mode (NS HYP), I patched U-Boot by adding all the virtualization modules needed by the ARMv7 U-Boot subtree (u-boot/arch/arm/cpu/armv7) (http://lists.denx.de/pipermail/u-boot/2013-September/163019.html).

Â

The patch executes two functions at the end of the boot_prep_linux( â ) function in bootm.c file (../arch/arm/lib):

- armv7_switch_nonsec(), which brings the processor from secure to non-secure state.
- armv7_switch_hyp(), which brings the processor from a non-secure mode to the HYP mode.

However, CPU does not switch properly to HYP mode as the execution hangs. The problem is that the processor is already in NS SVC mode when the armv7_switch_nonsec() is invoked: the assembly routine _nonsec_init in nonsec_virt.S file fails when it tries to write the MVBAR register, only accessible from a secure mode. Unfortunately the function (or some of its instructions) cannot be simply bypassed, as it holds all the set-up needed to be done in the secure state before actually switching to HYP mode: it sets up vector table and registers needed to enable the hypervisor call (hvc #0) instruction (else, it would hang just as in [2]).

Â

Following the discussion (http://lists.denx.de/pipermail/u-boot/2013-April/150718.html), I patched the start.S file, where the switch to NS SVC mode seems to happen. The patch just tests if the processor is already in HYP mode and does not switch back to SVC mode. Unfortunately neither this attempt was successful, driving me to think that the problem is even before the U-Boot (BL3) stage.

Â

The solution would be having the BL2 to set the processor in HYP mode and deliver it to U-Boot already in that mode, so that Xen would boot easily. Changing the BL2 requires the signature of the manufacturer, as it happens for the Odroid-XU3 board (Exynos 5422) (http://forum.odroid.com/viewtopic.php?f=98&t=6147) but Unfortunately acting on BL2 is not possible for the Arndale Octaboard, as there is no support from the Insignal.

Â

Is there a solution to overcome these problems, or anyone still working on it?

Â

When Xen 4.5 was released I read in the notes that support for the Exynos 5420 MPSoC was added (http://wiki.xenproject.org/wiki/Xen_Project_4.5_Feature_List#ARM_Hypervisor-Specific_Updates). Which is the platform where it was implemented? Is it open or is there private software just like in the Arndale Octaboard case?

Â

Downline of everything, this experience was needed to understand that I cannot use boards equipped with private software for my work, as overcoming it would be âhackingâ more than building a good toolchain. As my goal is to have the full control over the hardware I am going to use, I cannot have private stages that requires intervention of a third part help.Â


Could you suggest me some boards based on ARMv7 (A7 and/or A15) or ARMv8 fully controllable and on which Xen 4.5 works? Any help would be greatly appreciated.

Â

Â

Regards,

F.C.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.