This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Intercore interrupts on a53 between EL1 and EL3

We are working on Xilinx MPSOC which has 4 A53 cores, We are trying to run Linux(EL1) on 3 cores and Freertos(EL3) on 4th core. When software generated interrupts are raised from Linux , Freertos is not getting any interrupts. How to make interrupts work between Linux and Freertos when the cores are running at different ELs.

Parents
  • I suspect it is a routing issue.  The Arm architecture routes (or targets) an interrupt type to a particular EL.  General operation has linux using IRQs which are then routed to EL1.  This leaves FIQ free to be used as a secure interrupt and routed to EL3.  This routing is usually configured by the firmware.

    If Freertos is the only thing running on CPU3 then routing IRQs to EL3 might get things working.  Setting HCR_EL2.IMO=0 and SCR_EL3.IRQ=0 on CPU3 will route IRQs to EL1.

    Interrupt routing between ELs/security states is a relatively complex topic that is also complicated by the interrupt controller version you use.  Although it might not be directly usable in your system you might do well to look at the Arm Trusted Firmware as it can be configured to use multiple routing scenarios and might have some useful pointers for you.

Reply
  • I suspect it is a routing issue.  The Arm architecture routes (or targets) an interrupt type to a particular EL.  General operation has linux using IRQs which are then routed to EL1.  This leaves FIQ free to be used as a secure interrupt and routed to EL3.  This routing is usually configured by the firmware.

    If Freertos is the only thing running on CPU3 then routing IRQs to EL3 might get things working.  Setting HCR_EL2.IMO=0 and SCR_EL3.IRQ=0 on CPU3 will route IRQs to EL1.

    Interrupt routing between ELs/security states is a relatively complex topic that is also complicated by the interrupt controller version you use.  Although it might not be directly usable in your system you might do well to look at the Arm Trusted Firmware as it can be configured to use multiple routing scenarios and might have some useful pointers for you.

Children
No data