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

robjsstewart at ...196... robjsstewart at ...196...
Tue Jul 7 20:22:33 CEST 2015


Just to close the loop on this saga, the reason that this SoC would not not come up using the same board.h settings as the Pandaboard is because of a difference in L2 cache way size. The Pandaboard sets the way size to 32 KB in the PL310 L2 cache controller's Auxiliary Control register. The 437x has 256 KB of cache and 16 ways, giving 16 KB per way. The number of ways and the way size really don't need to be set as there are pins on the chip that provide the correct settings as defaults. I'll use this modified Pandaboard board.h file for the 437x platform as the other Auxiliary Control settings are desirable for it.

Bob

Sent from my android device.

-----Original Message-----
From: Martin Stein <martin.stein at ...1...>
To: Genode OS Framework Mailing List <genode-main at lists.sourceforge.net>
Sent: Tue, 07 Jul 2015 10:06 AM
Subject: Re: "Core" thread doesn't become active in kernel initialization

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

------------------------------------------------------------------------------
Don't Limit Your Business. Reach for the Cloud.
GigeNET's Cloud Solutions provide you with the tools and support that
you need to offload your IT needs and focus on growing your business.
Configured For All Businesses. Start Your Cloud Today.
https://www.gigenetcloud.com/
_______________________________________________
genode-main mailing list
genode-main at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/genode-main
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.genode.org/pipermail/users/attachments/20150707/5a84aff0/attachment.html>


More information about the users mailing list