"Core" thread doesn't become active in kernel initialization

Martin Stein martin.stein at ...1...
Tue Jul 7 16:06:04 CEST 2015


Hi Bob,

On 07.07.2015 15:32, Bob Stewart wrote:
> Hi Martin,
>     By pure luck I got the kernel to initialize and the printf test to
> run to completion.

Cool that you managed to find the problem :)

>     The issue appears to be with the member function
> "trustzone_hypervisor_call" in the PL310 struct which is in the board.h
> file for the platform. My board.h file is just a direct copy of the one
> from the panda directory.
> ...
> I kept the code commented out in "trustzone_hypervisor_call" did a clean
> and built the printf test without the the O flag setting.
> ...
> I'm not planning to use trustzone support currently but I'll take a look
> at the assembly code and read the trustzone support in the Cortex-A9
> TRM. The AM437x is at revision R2P10 of the Cortex-A9.
> 
> Does the Panda board come up in Secure mode?

The hypervisor calls you mentioned are not related to Trustzone support.
The Panda board comes with a fixed secure-hypervisor firmware. The user
OS (here Genode) is started in non-secure mode and AFAIK there is no way
to change this. The hypervisor calls are needed in our L2-cache driver
because some parts of the PL310-controller are configured to be
Trustzone-secured on Panda and the hypervisor provides an interface to
access them from the non-secure world.

Admittedly, I don't think that it is a good idea to copy stuff from the
Panda-specific sources. If you want to copy, better use PBXA9 as its
port has a less sophisticated feature-set. For example, now you have
enabled the L2 cache and maybe also FPU stuff which is both not
necessary but obstructive for a basic port. That said, it might also be
pure luck that your current implementation works. Maybe your PL310 needs
a proper replacement for the ops that were achieved by the hypercalls.

Cheers,
Martin




More information about the users mailing list