mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-16 01:24:27 +00:00

Vector entries in EL3 from lower ELs, first check for any pending async EAs from lower EL before handling the original exception. This happens when there is an error (EA) in the system which is not yet signaled to PE while executing at lower EL. During entry into EL3 the errors (EA) are synchronized causing async EA to pend at EL3. On detecting the pending EA (via ISR_EL1.A) EL3 either reflects it back to lower EL (KFH) or handles it in EL3 (FFH) based on EA routing model. In case of Firmware First handling mode (FFH), EL3 handles the pended EA first before returing back to handle the original exception. While in case of Kernel First handling mode (KFH), EL3 will return back to lower EL without handling the original exception. On returing to lower EL, EA will be pended. In KFH mode there is a risk of back and forth between EL3 and lower EL if the EA is masked at lower EL or priority of EA is lower than that of original exception. This is a limitation in current architecture but can be solved in future if EL3 gets a capability to inject virtual SError. Signed-off-by: Manish Pandey <manish.pandey2@arm.com> Change-Id: I3a2a31de7cf454d9d690b1ef769432a5b24f6c11
26 lines
623 B
C
26 lines
623 B
C
/*
|
|
* Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef EA_HANDLE_H
|
|
#define EA_HANDLE_H
|
|
|
|
/* Constants indicating the reason for an External Abort */
|
|
|
|
/* External Abort received at SError vector */
|
|
#define ERROR_EA_ASYNC 0
|
|
|
|
/* Synchronous External Abort received at Synchronous exception vector */
|
|
#define ERROR_EA_SYNC 1
|
|
|
|
/* External Abort synchronized by ESB instruction */
|
|
#define ERROR_EA_ESB 2
|
|
|
|
/* RAS event signalled as peripheral interrupt */
|
|
#define ERROR_INTERRUPT 3
|
|
|
|
#define ASYNC_EA_REPLAY_COUNTER U(100)
|
|
|
|
#endif /* EA_HANDLE_H */
|