Testing Fiasco.OC+L4re on ODROID-X2(Exynos4412)

Adam Lackorzynski adam at os.inf.tu-dresden.de
Thu Jun 11 22:39:01 CEST 2015


On Thu Jun 04, 2015 at 23:56:15 -0400, Reinier Millo Sánchez wrote:
> We have adapted the Proc class to support the IRQ on Fiasco.OC when
> compiling it in TrustZone Normal Side. Following the principle that in
> TrustZone the IRQ are used on Normal Side and the FIQ are used in Secure
> Side, we have only used the IRQ when compile the Fiasco.OC with TrustZone
> Normal Side. By default Fiasco.OC was using the IRQ and FIQ when compiling
> with TrustZone Normal Side. This is our patch:

True that on normal side only the FIQ is used, but the FIQ state shall
not play a role there, as the normal side must not be able to interfere
with the secure side. So it shouldn't matter?

> Now when we compile Fiasco.OC and run the Hello example for Odroid-X2 using
> TrustZone Normal Side, it works fine.

Ok good. What is running on the secure side in this case?

> We have noted the when is compiled with TrustZone Secure Side, then only use
> the FIQ, but when try to run it on Odroid-X2 it fails. This is the serial
> output:
>    GIC: Switching IRQ 64 to secure
>    GIC: Switching IRQ 79 to secure
>    GIC: Switching IRQ 78 to secure
>    GIC: Switching IRQ 9 to secure
>    GIC: Switching IRQ 8 to secure
>    GIC: Switching IRQ 10 to secure
>    GIC: Switching IRQ 11 to secure

Did you try to figure out where it is stuck?

> We are also interested to use Fiasco.OC for ODROID-X2 without TrustZone, in
> which case we must configure both IRQ and FIQ, but fails. This the serial
> output:

Is that the 'std' mode? I.e. there's nothing running on the secure side?

>    Regions of list 'regions'
>         [ 40000000,  400000e3] {       e4} Root   mbi_rt
>         [ 40001000,  40001aff] {      b00} Kern   fiasco
>         [ 40002000,  4003afff] {    39000} Kern   fiasco
>         [ 40090000,  4009681b] {     681c} Sigma0 sigma0
>         [ 40098000,  4009e177] {     6178} Sigma0 sigma0
>         [ 40140000,  4018b4ab] {    4b4ac} Root   moe
>         [ 41000000,  4100e4ff] {     e500} Boot   bootstrap
>         [ 41100000,  41133fff] {    34000} Root   Module
>       API Version: (87) experimental
>       Sigma0 config    ip:40090100 sp:00000000
>       Roottask config  ip:4014020c sp:00000000
>       Starting kernel fiasco at 400012c8
>    Hello from Startup::stage2
>    Per_cpu_data_alloc: (orig: 0xf002d7a0-0xf002e1a8)
>    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
>    KERNEL: Warning: No page-fault handler for 0xee202108, error
>    0x94000848, pc f002660c
> Anyone know what is happening with interrupts in Exynos4412 when TrustZone
> is not used? Anyone have some idea?

Adam                 adam at os.inf.tu-dresden.de
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/

More information about the l4-hackers mailing list