Lines Matching refs:EL3
4 This framework is responsible for managing interrupts routed to EL3. It also
5 allows EL3 software to configure the interrupt routing behavior. Its main
9 software (Secure interrupts) to EL3, when execution is in non-secure state
11 the interrupt to either software in EL3 or Secure-EL1 depending upon the
20 exception levels lower than EL3. This could be done with or without the
35 #. Secure EL1 interrupt. This type of interrupt can be routed to EL3 or
39 #. Non-secure interrupt. This type of interrupt can be routed to EL3,
44 #. EL3 interrupt. This type of interrupt can be routed to EL3 or Secure-EL1
46 always handled in EL3.
62 in the Secure Configuration Register at EL3 (``SCR_EL3.FIQ`` and ``SCR_EL3.IRQ``
63 bits). When ``SCR_EL3.FIQ``\ =1, FIQs are routed to EL3. Otherwise they are routed
65 ``SCR_EL3.IRQ``\ =1, IRQs are routed to EL3. Otherwise they are routed to the
66 FEL. This register is configured independently by EL3 software for each security
73 routed to EL3. A routing model is applicable only when execution is not in EL3.
84 which ones are valid or invalid. EL3 interrupts are currently supported only
93 targeted to EL3.
102 #. **CSS=0, TEL3=1**. Interrupt is routed to EL3 when execution is in secure
103 state. This is a valid routing model as secure software in EL3 can
111 #. **CSS=1, TEL3=1**. Interrupt is routed to EL3 when execution is in
112 non-secure state. This is a valid routing model as secure software in EL3
121 non-secure software through EL3. This is a valid routing model as secure
125 #. **CSS=0, TEL3=1**. Interrupt is routed to EL3 when execution is in secure
126 state. This is a valid routing model as secure software in EL3 can save
129 coordination between Secure-EL1 and EL3 software to ensure that the
136 #. **CSS=1, TEL3=1**. Interrupt is routed to EL3 when execution is in
138 reason to route the interrupt to EL3 software and then hand it back to
143 EL3 interrupts
149 by EL3 interrupt and can handover the interrupt to EL3 for handling.
152 invalid as EL3 interrupts are unconditionally routed to EL3, and EL3
156 #. **CSS=0, TEL3=1**. Interrupt is routed to EL3 when execution is in
158 in EL3 can handle the interrupt.
165 #. **CSS=1, TEL3=1**. Interrupt is routed to EL3 when execution is in
166 non-secure state. This is a valid routing model as secure software in EL3
190 particular security state, then interrupt signal will be routed to EL3 when in
196 Secure-EL0, both the EL3 and the non secure interrupt types map to the FIQ
199 route the FIQ signal to EL3 when executing in Secure-EL1/Secure-EL0, thereby
200 effectively routing the other interrupt type also to EL3.
207 #. Although the framework has support for 2 types of secure interrupts (EL3
209 like Arm GICv3 has architectural support for EL3 interrupts in the form of
211 handled in Secure-EL1. They can be delivered to Secure-EL1 via EL3 but they
212 cannot be handled in EL3.
215 in EL3.
227 software stack spanning from EL3 to Secure-EL1. These components are described
244 should be targeted to EL3. The remaining bits are reserved and SBZ. The helper
264 security state. EL3 interrupts are not considered.
270 following components of software running in EL3 and Secure-EL1. Each component is
273 #. EL3 Runtime Firmware. This component is common to all ports of TF-A.
285 An SPD service plugs into the EL3 runtime firmware and could be common to
306 EL3 runtime firmware
373 following APIs to let EL3 Runtime Firmware program and retrieve the routing
376 ``SCR_EL3`` register prior to returning from the EL3 exception level.
391 It is worth noting that in the current implementation of the framework, the EL3
406 type using the ``register_interrupt_type_handler()`` API in EL3 runtime firmware.
414 after receiving an interrupt from the EL3 runtime firmware. This information
428 - Secure-EL1 interrupts are routed to EL3 when execution is in non-secure
438 non secure interrupts are routed to EL3 when execution is in secure state
459 function is registered with the EL3 runtime firmware using the
476 registered with the EL3 runtime firmware using the
510 will be routed to EL3 (as per the routing model where **CSS=1 and
543 #. **CSS=1, TEL3=1**. Interrupts are routed to EL3 when execution is in
547 #. **CSS=0, TEL3=1**. Secure-EL1 interrupts are routed to EL3 when execution
549 in Secure-EL1/Secure-EL0 will not mask FIQs. The EL3 runtime firmware will
570 #. **CSS=0, TEL3=1**. Non-secure interrupts are routed to EL3. They will not
582 configured at the interrupt controller by the platform port of the EL3 runtime
583 firmware. It should configure any additional Secure-EL1 interrupts which the EL3
617 EL3 runtime firmware
620 The EL3 runtime firmware populates the IRQ and FIQ exception vectors referenced
625 mentioned earlier, EL3 runtime firmware always executes with the
678 #. Calling ``el3_exit()`` to return from EL3 into a lower exception level in
689 The SPD service begins handling an interrupt when the EL3 runtime firmware calls
702 interrupts. A non-secure interrupt should never be routed to EL3 from
705 S-EL1 interrupt should never be routed to EL3 from secure state. The handler
729 interrupt can be routed to EL3 while execution is in the SP. This implies
731 another higher priority Secure-EL1 interrupt or a EL3 interrupt. The SPD
785 exception return from EL3 by calling ``cm_set_next_eret_context(SECURE);``.
815 exception return from EL3 by calling ``cm_set_next_eret_context(NON_SECURE)``.
824 ``yielding`` SMC processing or by a higher priority EL3 interrupt during
826 non-secure interrupts can cause preemption of TSP since there are no EL3
827 interrupts in the system. With ``EL3_EXCEPTION_HANDLING=1`` however, any EL3
836 processing can be routed to either EL3 or Secure-EL1 and is controlled by build
839 routing model for the non-secure interrupt to be routed to EL3 from secure state
843 routing of non-secure interrupts from secure state to EL3. This is to prevent
871 exception return from EL3 by calling ``cm_set_next_eret_context(NON_SECURE)``.
893 exception return from EL3 by calling ``cm_set_next_eret_context(SECURE)``.
944 ``tsp_handle_preemption()`` to handover control back to EL3 by issuing