mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-15 00:54:22 +00:00
RAS: Update porting guide with RAS platform handlers
Change-Id: I76cb1d387ab51ee48fa91fd7458c7041b454ceee Signed-off-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
This commit is contained in:
parent
eaeaa4d048
commit
4431aae973
1 changed files with 100 additions and 0 deletions
|
@ -2850,6 +2850,106 @@ you can keep the default implementation here (which calls ``console_flush()``).
|
|||
If you're trying to debug crashes in BL1, you can call the console_xx_core_flush
|
||||
function exported by some console drivers from here.
|
||||
|
||||
Extternal Abort handling and RAS Support
|
||||
----------------------------------------
|
||||
|
||||
Function : plat_ea_handler
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
Argument : int
|
||||
Argument : uint64_t
|
||||
Argument : void *
|
||||
Argument : void *
|
||||
Argument : uint64_t
|
||||
Return : void
|
||||
|
||||
This function is invoked by the RAS framework for the platform to handle an
|
||||
External Abort received at EL3. The intention of the function is to attempt to
|
||||
resolve the cause of External Abort and return; if that's not possible, to
|
||||
initiate orderly shutdown of the system.
|
||||
|
||||
The first parameter (``int ea_reason``) indicates the reason for External Abort.
|
||||
Its value is one of ``ERROR_EA_*`` constants defined in ``ea_handle.h``.
|
||||
|
||||
The second parameter (``uint64_t syndrome``) is the respective syndrome
|
||||
presented to EL3 after having received the External Abort. Depending on the
|
||||
nature of the abort (as can be inferred from the ``ea_reason`` parameter), this
|
||||
can be the content of either ``ESR_EL3`` or ``DISR_EL1``.
|
||||
|
||||
The third parameter (``void *cookie``) is unused for now. The fourth parameter
|
||||
(``void *handle``) is a pointer to the preempted context. The fifth parameter
|
||||
(``uint64_t flags``) indicates the preempted security state. These parameters
|
||||
are received from the top-level exception handler.
|
||||
|
||||
If ``RAS_EXTENSION`` is set to ``1``, the default implementation of this
|
||||
function iterates through RAS handlers registered by the platform. If any of the
|
||||
RAS handlers resolve the External Abort, no further action is taken.
|
||||
|
||||
If ``RAS_EXTENSION`` is set to ``0``, or if none of the platform RAS handlers
|
||||
could resolve the External Abort, the default implementation prints an error
|
||||
message, and panics.
|
||||
|
||||
Function : plat_handle_uncontainable_ea
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
Argument : int
|
||||
Argument : uint64_t
|
||||
Return : void
|
||||
|
||||
This function is invoked by the RAS framework when an External Abort of
|
||||
Uncontainable type is received at EL3. Due to the critical nature of
|
||||
Uncontainable errors, the intention of this function is to initiate orderly
|
||||
shutdown of the system, and is not expected to return.
|
||||
|
||||
This function must be implemented in assembly.
|
||||
|
||||
The first and second parameters are the same as that of ``plat_ea_handler``.
|
||||
|
||||
The default implementation of this function calls
|
||||
``report_unhandled_exception``.
|
||||
|
||||
Function : plat_handle_double_fault
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
Argument : int
|
||||
Argument : uint64_t
|
||||
Return : void
|
||||
|
||||
This function is invoked by the RAS framework when another External Abort is
|
||||
received at EL3 while one is already being handled. I.e., a call to
|
||||
``plat_ea_handler`` is outstanding. Due to its critical nature, the intention of
|
||||
this function is to initiate orderly shutdown of the system, and is not expected
|
||||
recover or return.
|
||||
|
||||
This function must be implemented in assembly.
|
||||
|
||||
The first and second parameters are the same as that of ``plat_ea_handler``.
|
||||
|
||||
The default implementation of this function calls
|
||||
``report_unhandled_exception``.
|
||||
|
||||
Function : plat_handle_el3_ea
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
::
|
||||
|
||||
Return : void
|
||||
|
||||
This function is invoked when an External Abort is received while executing in
|
||||
EL3. Due to its critical nature, the intention of this function is to initiate
|
||||
orderly shutdown of the system, and is not expected recover or return.
|
||||
|
||||
This function must be implemented in assembly.
|
||||
|
||||
The default implementation of this function calls
|
||||
``report_unhandled_exception``.
|
||||
|
||||
Build flags
|
||||
-----------
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue