Hello Michael,

On Wed, Aug 21, 2024 at 05:47:37PM +0200, Michael Grunditz wrote:
> Time for next problem, interrupts. No interrupts are firing including
> timer. This is my GIC mem layout:
> 
> IRQ_CONTROLLER_DISTR_BASE  = 0xfee00000,
> IRQ_CONTROLLER_DISTR_SIZE  = 0x100000,
> IRQ_CONTROLLER_REDIST_BASE = 0xfef00000,
>  IRQ_CONTROLLER_REDIST_SIZE = 0x100000,
> 
> The addresses are what RISC OS uses on rk3399. If this is correct,
> what can stop interrupts.. can they be turned off? I probably need to
> toggle because I think that they are on from uboot. I can fix in
> uboot, but it would be nice if it can be done in kernel.

Well, reasons for getting no interrupt can be versatile. First and
foremost, it might wait for the wrong interrupt number. The GIC
registers might be wrong. Also interrupts can be turned off globally
via the CPU (pstate) register (typically this is normal state inside our
kernel). Finally, interrupts are TrustZone-sensitive and can be routed
either to secure or normal world.

Just a shot in the dark: you told us that you stepped from EL3 to EL2
in u-boot?! Maybe you just switched the exception-level without
further preparation of additional peripherals (like GIC) normally done
by the TrustZone firmware?
I assume that the GIC's default register values are initialized in
a way that interrupts are marked "secure", and thereby cannot be
enabled by the normal world resp. the hw kernel then. One way to proof
this would be to lookup the Igroup registers of the GIC's redistributor
interface while the CPU is still in EL3 (shortly before switching to
EL2).

Apart from this first guess, I think you need to check the state
systematically. There is no way to simply fix things in u-boot anyway,
because the kernel initializes the GIC by itself, thereby overwriting
any settings done before (except secure TrustZone configuration, if
started below EL3).
If my above assumption is a dead end, you might start with printing
the GIC's state, after interrupts got turned on or off. A simple print
of the register addresses and values, and of course the interrupt
number, whenever an interrupt got enabled or disabled, could help
already.

Regards Stefan

> 
> Thanks
> Michael
> _______________________________________________
> users mailing list -- users@lists.genode.org
> To unsubscribe send an email to users-le...@lists.genode.org
> Archived at 
> https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/B3PR6FAMO62YLO5ZMOWXSGARFXKHMX27/

-- 
Stefan Kalkowski
Genode labs

https://github.com/skalk | https://genode.org
_______________________________________________
users mailing list -- users@lists.genode.org
To unsubscribe send an email to users-le...@lists.genode.org
Archived at 
https://lists.genode.org/mailman3/hyperkitty/list/users@lists.genode.org/message/DKFJW6BE5QIWWCXAWKANQWVLYYCAYJCI/

Reply via email to