arm_64 exception vector and el2 stack

Michael Grunditz michael.grunditz at gmail.com
Tue Jan 3 16:43:49 CET 2023


On Tue, 3 Jan 2023 at 16:10, Stefan Kalkowski
<stefan.kalkowski at genode-labs.com> wrote:
>
> Hello Michael,


Hello Stefan and thanks for the answer.
>
>
> On Tue, Jan 03, 2023 at 12:29:31PM +0100, Michael Grunditz wrote:
> > Hi
> >
> > Where does Genode/base-hw write the exception vector to the address that
> > hypervisor_exception_vector reports it?
>
> The hypervisor_exception_vector gets mapped at a later point during
> kernel initialization. But it needs to be set in the corresponding EL2
> register while the bootstrap code is still in EL2 to be able to return
> later to it. It is not useable for debugging kernel/bootstrap issues
> anyway. So do not mind, if you cannot see anything useful when
> provoking a machine exception in this stage. If you want to use it as
> debug utility, you can use the u-boot exception vector, like you
> already did.
>
I see. Thanks for the explanation.
>
> >
> > The el2_stack seems like a very high address.
>
> This is correct, but it is simply at the higher area of the virtual
> 64-bit address space, like the whole kernel/hypervisor code too.
>
I figured that. It is just that I was unsure about el2_stack because
of , set before mmu.

I am pretty much stuck in the EL dropping from EL2. It worked for
RK3399 but that was
with A53. I have cross referenced the manuals and studied the uboot
macro asm. No
difference , and the uboot switch works just fine. I am currently
comparing Genode and
uboot setup before EL switching.If I don't set the EL2  stack I get an
exception ESR:
0x3a000000. Exception from an Illegal execution state. In uboot it
isn't changed (Obvisually ).
I am also going to rebase once again. Good as a sanity
check.

Thanks,

Michael



More information about the users mailing list