Doc: Remove useless escape characters

Just like has been done in the porting guide a couple of patches
earlier, kill all escaped underscore characters in all documents.

Change-Id: I7fb5b806412849761d9221a6ce3cbd95ec43d611
Signed-off-by: Sandrine Bailleux <sandrine.bailleux@arm.com>
This commit is contained in:
Sandrine Bailleux 2019-02-08 15:26:36 +01:00
parent 337e2f1f2b
commit f3cacadae3
12 changed files with 180 additions and 180 deletions

View File

@ -209,7 +209,7 @@ It is responsible for:
#. Tracking which images have been verified. In case an image is a part of #. Tracking which images have been verified. In case an image is a part of
multiple CoTs then it should be verified only once e.g. the Trusted World multiple CoTs then it should be verified only once e.g. the Trusted World
Key Certificate in the TBBR-Client spec. contains information to verify Key Certificate in the TBBR-Client spec. contains information to verify
SCP\_BL2, BL31, BL32 each of which have a separate CoT. (This SCP_BL2, BL31, BL32 each of which have a separate CoT. (This
responsibility has not been described in this document but should be responsibility has not been described in this document but should be
trivial to implement). trivial to implement).
@ -627,7 +627,7 @@ The TBBR CoT
The CoT can be found in ``drivers/auth/tbbr/tbbr_cot.c``. This CoT consists of an The CoT can be found in ``drivers/auth/tbbr/tbbr_cot.c``. This CoT consists of an
array of image descriptors and it is registered in the framework using the macro array of image descriptors and it is registered in the framework using the macro
``REGISTER_COT(cot_desc)``, where 'cot\_desc' must be the name of the array ``REGISTER_COT(cot_desc)``, where 'cot_desc' must be the name of the array
(passing a pointer or any other type of indirection will cause the registration (passing a pointer or any other type of indirection will cause the registration
process to fail). process to fail).

View File

@ -973,7 +973,7 @@ New features
- Updated PSCI support: - Updated PSCI support:
- Added support for PSCI NODE\_HW\_STATE API for Arm platforms. - Added support for PSCI NODE_HW_STATE API for Arm platforms.
- New optional platform hook, ``pwr_domain_pwr_down_wfi()``, in - New optional platform hook, ``pwr_domain_pwr_down_wfi()``, in
``plat_psci_ops`` to enable platforms to perform platform-specific actions ``plat_psci_ops`` to enable platforms to perform platform-specific actions
@ -1000,14 +1000,14 @@ New features
This can be useful to map a non-cacheable memory region, such as a DMA This can be useful to map a non-cacheable memory region, such as a DMA
buffer. buffer.
- Introduced the MT\_EXECUTE/MT\_EXECUTE\_NEVER memory mapping attributes to - Introduced the MT_EXECUTE/MT_EXECUTE_NEVER memory mapping attributes to
specify the access permissions for instruction execution of a memory specify the access permissions for instruction execution of a memory
region. region.
- Enabled support to isolate code and read-only data on separate memory pages, - Enabled support to isolate code and read-only data on separate memory pages,
allowing independent access control to be applied to each. allowing independent access control to be applied to each.
- Enabled SCR\_EL3.SIF (Secure Instruction Fetch) bit in BL1 and BL31 common - Enabled SCR_EL3.SIF (Secure Instruction Fetch) bit in BL1 and BL31 common
architectural setup code, preventing fetching instructions from non-secure architectural setup code, preventing fetching instructions from non-secure
memory when in secure state. memory when in secure state.
@ -1025,7 +1025,7 @@ New features
the working directory. the working directory.
- Aligned command line options for specifying images to use same naming - Aligned command line options for specifying images to use same naming
convention as specified by TBBR and already used in cert\_create tool. convention as specified by TBBR and already used in cert_create tool.
- Refactored the TZC-400 driver to also support memory controllers that - Refactored the TZC-400 driver to also support memory controllers that
integrate TZC functionality, for example Arm CoreLink DMC-500. Also added integrate TZC functionality, for example Arm CoreLink DMC-500. Also added
@ -1036,7 +1036,7 @@ New features
- Enhanced support for Arm platforms: - Enhanced support for Arm platforms:
- Updated image loading support to make SCP images (SCP\_BL2 and SCP\_BL2U) - Updated image loading support to make SCP images (SCP_BL2 and SCP_BL2U)
optional. optional.
- Enhanced topology description support to allow multi-cluster topology - Enhanced topology description support to allow multi-cluster topology
@ -1104,7 +1104,7 @@ New features
**Note** the default build of TF-A will not be able to boot **Note** the default build of TF-A will not be able to boot
Linux kernel with GICv2 FDT blob. Linux kernel with GICv2 FDT blob.
- Enabled wake-up from CPU\_SUSPEND to stand-by by temporarily re-routing - Enabled wake-up from CPU_SUSPEND to stand-by by temporarily re-routing
interrupts and then restoring after resume. interrupts and then restoring after resume.
Issues resolved since last release Issues resolved since last release
@ -1219,7 +1219,7 @@ New features
- Better alignment with version 1.0 of the PSCI specification. - Better alignment with version 1.0 of the PSCI specification.
- Added support for the SYSTEM\_SUSPEND PSCI API on Arm platforms. When invoked - Added support for the SYSTEM_SUSPEND PSCI API on Arm platforms. When invoked
on the last running core on a supported platform, this puts the system on the last running core on a supported platform, this puts the system
into a low power mode with memory retention. into a low power mode with memory retention.
@ -1615,7 +1615,7 @@ Known issues
<SimName>System Generator:FVP_Base_A57x4_A53x4</SimName> <SimName>System Generator:FVP_Base_A57x4_A53x4</SimName>
to to
System Generator:FVP\_Base\_Cortex-A57x4\_A53x4 System Generator:FVP_Base_Cortex-A57x4_A53x4
A similar change can be made to the other Cortex-A57-A53 Base FVP variants. A similar change can be made to the other Cortex-A57-A53 Base FVP variants.
@ -1643,7 +1643,7 @@ New features
- Moved architectural timer setup to platform-specific code. - Moved architectural timer setup to platform-specific code.
- Added standby state support to PSCI cpu\_suspend implementation. - Added standby state support to PSCI cpu_suspend implementation.
- SRAM usage improvements: - SRAM usage improvements:
@ -1669,7 +1669,7 @@ New features
default configuration is provided for the Base FVPs. This means the model default configuration is provided for the Base FVPs. This means the model
parameter ``-C bp.secure_memory=1`` is now supported. parameter ``-C bp.secure_memory=1`` is now supported.
- Started saving the PSCI cpu\_suspend 'power\_state' parameter prior to - Started saving the PSCI cpu_suspend 'power_state' parameter prior to
suspending a CPU. This allows platforms that implement multiple power-down suspending a CPU. This allows platforms that implement multiple power-down
states at the same affinity level to identify a specific state. states at the same affinity level to identify a specific state.
@ -1767,13 +1767,13 @@ New features
instructions for how to contribute and updated copyright text in all files instructions for how to contribute and updated copyright text in all files
to acknowledge contributors. to acknowledge contributors.
- The PSCI CPU\_SUSPEND API has been stabilised to the extent where it can be - The PSCI CPU_SUSPEND API has been stabilised to the extent where it can be
used for entry into power down states with the following restrictions: used for entry into power down states with the following restrictions:
- Entry into standby states is not supported. - Entry into standby states is not supported.
- The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs. - The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs.
- The PSCI AFFINITY\_INFO api has undergone limited testing on the Base FVPs to - The PSCI AFFINITY_INFO api has undergone limited testing on the Base FVPs to
allow experimental use. allow experimental use.
- Required C library and runtime header files are now included locally in - Required C library and runtime header files are now included locally in
@ -1803,7 +1803,7 @@ New features
particular code modules to DRAM itself. particular code modules to DRAM itself.
- Reworked BL2 to BL3-1 handover interface. A new composite structure - Reworked BL2 to BL3-1 handover interface. A new composite structure
(bl31\_args) holds the superset of information that needs to be passed from (bl31_args) holds the superset of information that needs to be passed from
BL2 to BL3-1, including information on how handover execution control to BL2 to BL3-1, including information on how handover execution control to
BL3-2 (if present) and BL3-3 (non-trusted firmware). BL3-2 (if present) and BL3-3 (non-trusted firmware).
@ -1817,7 +1817,7 @@ New features
- Added a framework for implementing EL3 runtime services. Reworked the PSCI - Added a framework for implementing EL3 runtime services. Reworked the PSCI
implementation to be one such runtime service. implementation to be one such runtime service.
- Reworked the exception handling logic, making use of both SP\_EL0 and SP\_EL3 - Reworked the exception handling logic, making use of both SP_EL0 and SP_EL3
stack pointers for determining the type of exception, managing general stack pointers for determining the type of exception, managing general
purpose and system register context on exception entry/exit, and handling purpose and system register context on exception entry/exit, and handling
SMCs. SMCs are directed to the correct EL3 runtime service. SMCs. SMCs are directed to the correct EL3 runtime service.

View File

@ -93,7 +93,7 @@ For Cortex-A53, the following errata build flags are defined :
- ``ERRATA_A53_855873``: This applies errata 855873 workaround to Cortex-A53 - ``ERRATA_A53_855873``: This applies errata 855873 workaround to Cortex-A53
CPUs. Though the erratum is present in every revision of the CPU, CPUs. Though the erratum is present in every revision of the CPU,
this workaround is only applied to CPUs from r0p3 onwards, which feature this workaround is only applied to CPUs from r0p3 onwards, which feature
a chicken bit in CPUACTLR\_EL1 to enable a hardware workaround. a chicken bit in CPUACTLR_EL1 to enable a hardware workaround.
Earlier revisions of the CPU have other errata which require the same Earlier revisions of the CPU have other errata which require the same
workaround in software, so they should be covered anyway. workaround in software, so they should be covered anyway.
@ -194,4 +194,4 @@ architecture that can be enabled by the platform as desired.
.. _Cortex-A72 MPCore Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm012079/index.html .. _Cortex-A72 MPCore Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm012079/index.html
.. _Firmware Design guide: firmware-design.rst .. _Firmware Design guide: firmware-design.rst
.. _Cortex-A57 Software Optimization Guide: http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf .. _Cortex-A57 Software Optimization Guide: http://infocenter.arm.com/help/topic/com.arm.doc.uan0015b/Cortex_A57_Software_Optimization_Guide_external.pdf
.. _Arm DSU Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm138168/index.html .. _Arm DSU Software Developers Errata Notice: http://infocenter.arm.com/help/topic/com.arm.doc.epm138168/index.html

View File

@ -404,16 +404,16 @@ needed in the ``bl2_plat_handle_post_image_load()`` function. These
configuration files can be passed to next Boot Loader stages as arguments configuration files can be passed to next Boot Loader stages as arguments
by updating the corresponding entrypoint information in this function. by updating the corresponding entrypoint information in this function.
SCP\_BL2 (System Control Processor Firmware) image load SCP_BL2 (System Control Processor Firmware) image load
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Some systems have a separate System Control Processor (SCP) for power, clock, Some systems have a separate System Control Processor (SCP) for power, clock,
reset and system control. BL2 loads the optional SCP\_BL2 image from platform reset and system control. BL2 loads the optional SCP_BL2 image from platform
storage into a platform-specific region of secure memory. The subsequent storage into a platform-specific region of secure memory. The subsequent
handling of SCP\_BL2 is platform specific. For example, on the Juno Arm handling of SCP_BL2 is platform specific. For example, on the Juno Arm
development platform port the image is transferred into SCP's internal memory development platform port the image is transferred into SCP's internal memory
using the Boot Over MHU (BOM) protocol after being loaded in the trusted SRAM using the Boot Over MHU (BOM) protocol after being loaded in the trusted SRAM
memory. The SCP executes SCP\_BL2 and signals to the Application Processor (AP) memory. The SCP executes SCP_BL2 and signals to the Application Processor (AP)
for BL2 execution to continue. for BL2 execution to continue.
EL3 Runtime Software image load EL3 Runtime Software image load
@ -688,7 +688,7 @@ Data structures used in the BL31 cold boot interface
These structures are designed to support compatibility and independent These structures are designed to support compatibility and independent
evolution of the structures and the firmware images. For example, a version of evolution of the structures and the firmware images. For example, a version of
BL31 that can interpret the BL3x image information from different versions of BL31 that can interpret the BL3x image information from different versions of
BL2, a platform that uses an extended entry\_point\_info structure to convey BL2, a platform that uses an extended entry_point_info structure to convey
additional register information to BL31, or a ELF image loader that can convey additional register information to BL31, or a ELF image loader that can convey
more details about the firmware images. more details about the firmware images.
@ -803,10 +803,10 @@ Required CPU state for warm boot initialization
When requesting a CPU power-on, or suspending a running CPU, AArch32 EL3 When requesting a CPU power-on, or suspending a running CPU, AArch32 EL3
Runtime Software must ensure execution of a warm boot initialization entrypoint. Runtime Software must ensure execution of a warm boot initialization entrypoint.
If TF-A BL1 is used and the PROGRAMMABLE\_RESET\_ADDRESS build flag is false, If TF-A BL1 is used and the PROGRAMMABLE_RESET_ADDRESS build flag is false,
then AArch32 EL3 Runtime Software must ensure that BL1 branches to the warm then AArch32 EL3 Runtime Software must ensure that BL1 branches to the warm
boot entrypoint by arranging for the BL1 platform function, boot entrypoint by arranging for the BL1 platform function,
plat\_get\_my\_entrypoint(), to return a non-zero value. plat_get_my_entrypoint(), to return a non-zero value.
In this case, the warm boot entrypoint must be in AArch32 EL3, little-endian In this case, the warm boot entrypoint must be in AArch32 EL3, little-endian
data access and all interrupt sources masked: data access and all interrupt sources masked:
@ -996,7 +996,7 @@ mandatory APIs in PSCI v1.1, PSCI v1.0 and in PSCI v0.2 draft specification
`Power State Coordination Interface PDD`_ are implemented. The table lists `Power State Coordination Interface PDD`_ are implemented. The table lists
the PSCI v1.1 APIs and their support in generic code. the PSCI v1.1 APIs and their support in generic code.
An API implementation might have a dependency on platform code e.g. CPU\_SUSPEND An API implementation might have a dependency on platform code e.g. CPU_SUSPEND
requires the platform to export a part of the implementation. Hence the level requires the platform to export a part of the implementation. Hence the level
of support of the mandatory APIs depends upon the support exported by the of support of the mandatory APIs depends upon the support exported by the
platform port as well. The Juno and FVP (all variants) platforms export all the platform port as well. The Juno and FVP (all variants) platforms export all the
@ -1657,13 +1657,13 @@ The following list describes the memory layout on the Arm development platforms:
- BL2 is loaded below BL1 RW - BL2 is loaded below BL1 RW
- EL3 Runtime Software, BL31 for AArch64 and BL32 for AArch32 (e.g. SP\_MIN), - EL3 Runtime Software, BL31 for AArch64 and BL32 for AArch32 (e.g. SP_MIN),
is loaded at the top of the Trusted SRAM, such that its NOBITS sections will is loaded at the top of the Trusted SRAM, such that its NOBITS sections will
overwrite BL1 R/W data and BL2. This implies that BL1 global variables overwrite BL1 R/W data and BL2. This implies that BL1 global variables
remain valid only until execution reaches the EL3 Runtime Software entry remain valid only until execution reaches the EL3 Runtime Software entry
point during a cold boot. point during a cold boot.
- On Juno, SCP\_BL2 is loaded temporarily into the EL3 Runtime Software memory - On Juno, SCP_BL2 is loaded temporarily into the EL3 Runtime Software memory
region and transfered to the SCP before being overwritten by EL3 Runtime region and transfered to the SCP before being overwritten by EL3 Runtime
Software. Software.
@ -2089,11 +2089,11 @@ the update made by CPU0 as well.
To use bakery locks when ``USE_COHERENT_MEM`` is disabled, the lock data structure To use bakery locks when ``USE_COHERENT_MEM`` is disabled, the lock data structure
has been redesigned. The changes utilise the characteristic of Lamport's Bakery has been redesigned. The changes utilise the characteristic of Lamport's Bakery
algorithm mentioned earlier. The bakery\_lock structure only allocates the memory algorithm mentioned earlier. The bakery_lock structure only allocates the memory
for a single CPU. The macro ``DEFINE_BAKERY_LOCK`` allocates all the bakery locks for a single CPU. The macro ``DEFINE_BAKERY_LOCK`` allocates all the bakery locks
needed for a CPU into a section ``bakery_lock``. The linker allocates the memory needed for a CPU into a section ``bakery_lock``. The linker allocates the memory
for other cores by using the total size allocated for the bakery\_lock section for other cores by using the total size allocated for the bakery_lock section
and multiplying it with (PLATFORM\_CORE\_COUNT - 1). This enables software to and multiplying it with (PLATFORM_CORE_COUNT - 1). This enables software to
perform software cache maintenance on the lock data structure without running perform software cache maintenance on the lock data structure without running
into coherency issues associated with mismatched attributes. into coherency issues associated with mismatched attributes.
@ -2155,7 +2155,7 @@ with n bakery locks are:
------------------ ------------------
Consider a system of 2 CPUs with 'N' bakery locks as shown above. For an Consider a system of 2 CPUs with 'N' bakery locks as shown above. For an
operation on Lock\_N, the corresponding ``bakery_info_t`` in both CPU0 and CPU1 operation on Lock_N, the corresponding ``bakery_info_t`` in both CPU0 and CPU1
``bakery_lock`` section need to be fetched and appropriate cache operations need ``bakery_lock`` section need to be fetched and appropriate cache operations need
to be performed for each access. to be performed for each access.
@ -2619,8 +2619,8 @@ categories. Based upon the above, the code layout looks like this:
lib Yes Yes Yes lib Yes Yes Yes
services No No Yes services No No Yes
The build system provides a non configurable build option IMAGE\_BLx for each The build system provides a non configurable build option IMAGE_BLx for each
boot loader stage (where x = BL stage). e.g. for BL1 , IMAGE\_BL1 will be boot loader stage (where x = BL stage). e.g. for BL1 , IMAGE_BL1 will be
defined by the build system. This enables TF-A to compile certain code only defined by the build system. This enables TF-A to compile certain code only
for specific boot loader stages for specific boot loader stages

View File

@ -135,8 +135,8 @@ The following is a brief description of the supported states:
BL1 SMC Interface BL1 SMC Interface
----------------- -----------------
BL1\_SMC\_CALL\_COUNT BL1_SMC_CALL_COUNT
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
:: ::
@ -148,8 +148,8 @@ BL1\_SMC\_CALL\_COUNT
This SMC returns the number of SMCs supported by BL1. This SMC returns the number of SMCs supported by BL1.
BL1\_SMC\_UID BL1_SMC_UID
~~~~~~~~~~~~~ ~~~~~~~~~~~
:: ::
@ -162,8 +162,8 @@ BL1\_SMC\_UID
This SMC returns the 128-bit `Universally Unique Identifier`_ for the This SMC returns the 128-bit `Universally Unique Identifier`_ for the
BL1 SMC service. BL1 SMC service.
BL1\_SMC\_VERSION BL1_SMC_VERSION
~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
:: ::
@ -176,8 +176,8 @@ BL1\_SMC\_VERSION
This SMC returns the current version of the BL1 SMC service. This SMC returns the current version of the BL1 SMC service.
BL1\_SMC\_RUN\_IMAGE BL1_SMC_RUN_IMAGE
~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
:: ::
@ -196,8 +196,8 @@ This SMC passes execution control to an EL3 image described by the provided
``entry_point_info_t`` structure. In the normal TF-A boot flow, BL2 invokes ``entry_point_info_t`` structure. In the normal TF-A boot flow, BL2 invokes
this SMC for BL1 to pass execution control to BL31. this SMC for BL1 to pass execution control to BL31.
FWU\_SMC\_IMAGE\_COPY FWU_SMC_IMAGE_COPY
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
:: ::
@ -245,8 +245,8 @@ contiguous memory.
Once the SMC is handled, BL1 returns from exception to the normal world caller. Once the SMC is handled, BL1 returns from exception to the normal world caller.
FWU\_SMC\_IMAGE\_AUTH FWU_SMC_IMAGE_AUTH
~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~
:: ::
@ -285,8 +285,8 @@ BL1 returns from exception to the caller. If authentication succeeds then BL1
sets the image state to AUTHENTICATED. If authentication fails then BL1 returns sets the image state to AUTHENTICATED. If authentication fails then BL1 returns
the -EAUTH error and sets the image state back to RESET. the -EAUTH error and sets the image state back to RESET.
FWU\_SMC\_IMAGE\_EXECUTE FWU_SMC_IMAGE_EXECUTE
~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -313,8 +313,8 @@ secure world image.
BL1 saves the normal world caller's context, sets the secure image state to BL1 saves the normal world caller's context, sets the secure image state to
EXECUTED, and returns from exception to the secure image. EXECUTED, and returns from exception to the secure image.
FWU\_SMC\_IMAGE\_RESUME FWU_SMC_IMAGE_RESUME
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~
:: ::
@ -340,8 +340,8 @@ the resuming world. If the call is successful then the caller provided
``image_param`` is returned to the resumed world, otherwise an error code is ``image_param`` is returned to the resumed world, otherwise an error code is
returned to the caller. returned to the caller.
FWU\_SMC\_SEC\_IMAGE\_DONE FWU_SMC_SEC_IMAGE_DONE
~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -361,8 +361,8 @@ BL1 sets the previously executing secure image state to the RESET state,
restores the normal world context and returns from exception into the normal restores the normal world context and returns from exception into the normal
world. world.
FWU\_SMC\_UPDATE\_DONE FWU_SMC_UPDATE_DONE
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
:: ::
@ -377,8 +377,8 @@ This SMC completes the firmware update process. BL1 calls the platform specific
function ``bl1_plat_fwu_done``, passing the optional argument ``client_cookie`` as function ``bl1_plat_fwu_done``, passing the optional argument ``client_cookie`` as
a ``void *``. The SMC does not return. a ``void *``. The SMC does not return.
FWU\_SMC\_IMAGE\_RESET FWU_SMC_IMAGE_RESET
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~
:: ::

View File

@ -451,7 +451,7 @@ requirements mentioned earlier.
The handover agreement between the TSP and the TSPD requires that the TSPD The handover agreement between the TSP and the TSPD requires that the TSPD
masks all interrupts (``PSTATE.DAIF`` bits) when it calls masks all interrupts (``PSTATE.DAIF`` bits) when it calls
``tsp_sel1_intr_entry()``. The TSP has to preserve the callee saved general ``tsp_sel1_intr_entry()``. The TSP has to preserve the callee saved general
purpose, SP\_EL1/Secure-EL0, LR, VFP and system registers. It can use purpose, SP_EL1/Secure-EL0, LR, VFP and system registers. It can use
``x0-x18`` to enable its C runtime. ``x0-x18`` to enable its C runtime.
#. The TSPD implements a handler function for Secure-EL1 interrupts. This #. The TSPD implements a handler function for Secure-EL1 interrupts. This
@ -595,7 +595,7 @@ The TSP also replaces the default exception vector table referenced through the
``early_exceptions`` variable, with a vector table capable of handling FIQ and IRQ ``early_exceptions`` variable, with a vector table capable of handling FIQ and IRQ
exceptions taken at the same (Secure-EL1) exception level. This table is exceptions taken at the same (Secure-EL1) exception level. This table is
referenced through the ``tsp_exceptions`` variable and programmed into the referenced through the ``tsp_exceptions`` variable and programmed into the
VBAR\_EL1. It caters for the asynchronous handling model. VBAR_EL1. It caters for the asynchronous handling model.
The TSP also programs the Secure Physical Timer in the Arm Generic Timer block The TSP also programs the Secure Physical Timer in the Arm Generic Timer block
to raise a periodic interrupt (every half a second) for the purpose of testing to raise a periodic interrupt (every half a second) for the purpose of testing
@ -904,7 +904,7 @@ In the synchronous model, it should begin handling a Secure-EL1 interrupt after
receiving control from the SPD service at an entrypoint agreed upon during build receiving control from the SPD service at an entrypoint agreed upon during build
time or during the registration phase. Before handling the interrupt, the SP time or during the registration phase. Before handling the interrupt, the SP
should save any Secure-EL1 system register context which is needed for resuming should save any Secure-EL1 system register context which is needed for resuming
normal execution in the SP later e.g. ``SPSR_EL1,``\ ELR\_EL1\`. After handling the normal execution in the SP later e.g. ``SPSR_EL1,``\ ELR_EL1\`. After handling the
interrupt, the SP could return control back to the exception level and security interrupt, the SP could return control back to the exception level and security
state where the interrupt was originally taken from. The SP should use an SMC32 state where the interrupt was originally taken from. The SP should use an SMC32
or SMC64 to ask the SPD service to do this. or SMC64 to ask the SPD service to do this.

View File

@ -1,5 +1,5 @@
TF-A Platform Compatibility Policy TF-A Platform Compatibility Policy
====================================================== ==================================
.. section-numbering:: .. section-numbering::

View File

@ -140,7 +140,7 @@ to this library are declared in ``psci.h`` and are as listed below:
void psci_register_spd_pm_hook(const spd_pm_ops_t *pm); void psci_register_spd_pm_hook(const spd_pm_ops_t *pm);
void psci_prepare_next_non_secure_ctx(entry_point_info_t *next_image_info); void psci_prepare_next_non_secure_ctx(entry_point_info_t *next_image_info);
The CPU context data 'cpu\_context\_t' is programmed to the registers differently The CPU context data 'cpu_context_t' is programmed to the registers differently
when PSCI is integrated with an AArch32 EL3 Runtime Software compared to when PSCI is integrated with an AArch32 EL3 Runtime Software compared to
when the PSCI is integrated with an AArch64 EL3 Runtime Software (BL31). For when the PSCI is integrated with an AArch64 EL3 Runtime Software (BL31). For
example, in the case of AArch64, there is no need to retrieve ``cpu_context_t`` example, in the case of AArch64, there is no need to retrieve ``cpu_context_t``
@ -159,7 +159,7 @@ values if required.
PSCI library needs the flexibility to access both secure and non-secure PSCI library needs the flexibility to access both secure and non-secure
copies of banked registers. Hence it needs to be invoked in Monitor mode copies of banked registers. Hence it needs to be invoked in Monitor mode
for AArch32 and in EL3 for AArch64. The NS bit in SCR (in AArch32) or SCR\_EL3 for AArch32 and in EL3 for AArch64. The NS bit in SCR (in AArch32) or SCR_EL3
(in AArch64) must be set to 0. Additional requirements for the PSCI library (in AArch64) must be set to 0. Additional requirements for the PSCI library
interfaces are: interfaces are:
@ -175,8 +175,8 @@ interfaces are:
Further requirements for each interface can be found in the interface Further requirements for each interface can be found in the interface
description. description.
Interface : psci\_setup() Interface : psci_setup()
~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -212,8 +212,8 @@ must have completed. Major actions performed by this interface are:
`CPU Context management API`_) for all the CPUs in the `CPU Context management API`_) for all the CPUs in the
platform platform
Interface : psci\_prepare\_next\_non\_secure\_ctx() Interface : psci_prepare_next_non_secure_ctx()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -225,11 +225,11 @@ must be called by the EL3 Runtime Software to initialize the non-secure world
context. The non-secure world entrypoint information ``next_image_info`` (first context. The non-secure world entrypoint information ``next_image_info`` (first
argument) will be used to determine the non-secure context. After this function argument) will be used to determine the non-secure context. After this function
returns, the EL3 Runtime Software must retrieve the ``cpu_context_t`` (using returns, the EL3 Runtime Software must retrieve the ``cpu_context_t`` (using
cm\_get\_context()) for the current CPU and program the registers prior to exit cm_get_context()) for the current CPU and program the registers prior to exit
to the non-secure world. to the non-secure world.
Interface : psci\_register\_spd\_pm\_hook() Interface : psci_register_spd_pm_hook()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -244,8 +244,8 @@ appropriately during power management. Calling this function is optional and
need to be called by the primary CPU during the cold boot sequence after need to be called by the primary CPU during the cold boot sequence after
``psci_setup()`` has completed. ``psci_setup()`` has completed.
Interface : psci\_smc\_handler() Interface : psci_smc_handler()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -270,8 +270,8 @@ PSCI API corresponding to ``smc_fid``. This function may not return back to the
caller if PSCI API causes power down of the CPU. In this case, when the CPU caller if PSCI API causes power down of the CPU. In this case, when the CPU
wakes up, it will start execution from the warm reset address. wakes up, it will start execution from the warm reset address.
Interface : psci\_warmboot\_entrypoint() Interface : psci_warmboot_entrypoint()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
:: ::
@ -302,7 +302,7 @@ EL3 Runtime Software dependencies
--------------------------------- ---------------------------------
The PSCI Library includes supporting frameworks like context management, The PSCI Library includes supporting frameworks like context management,
cpu operations (cpu\_ops) and per-cpu data framework. Other helper library cpu operations (cpu_ops) and per-cpu data framework. Other helper library
functions like bakery locks and spin locks are also included in the library. functions like bakery locks and spin locks are also included in the library.
The dependencies which must be fulfilled by the EL3 Runtime Software The dependencies which must be fulfilled by the EL3 Runtime Software
for integration with PSCI library are described below. for integration with PSCI library are described below.
@ -323,7 +323,7 @@ these functions but the EL3 Runtime Software may use its own implementation.
These must be implemented as described in ISO C Standard. These must be implemented as described in ISO C Standard.
**Function : flush\_dcache\_range()** **Function : flush_dcache_range()**
:: ::
@ -333,7 +333,7 @@ These must be implemented as described in ISO C Standard.
This function cleans and invalidates (flushes) the data cache for memory This function cleans and invalidates (flushes) the data cache for memory
at address ``addr`` (first argument) address and of size ``size`` (second argument). at address ``addr`` (first argument) address and of size ``size`` (second argument).
**Function : inv\_dcache\_range()** **Function : inv_dcache_range()**
:: ::
@ -343,7 +343,7 @@ at address ``addr`` (first argument) address and of size ``size`` (second argume
This function invalidates (flushes) the data cache for memory at address This function invalidates (flushes) the data cache for memory at address
``addr`` (first argument) address and of size ``size`` (second argument). ``addr`` (first argument) address and of size ``size`` (second argument).
**Function : do\_panic()** **Function : do_panic()**
:: ::
@ -363,7 +363,7 @@ demonstrates how these APIs can be implemented but the EL3 Runtime Software can
choose a more optimal implementation (like dedicating the secure TPIDRPRW choose a more optimal implementation (like dedicating the secure TPIDRPRW
system register (in AArch32) for storing these pointers). system register (in AArch32) for storing these pointers).
**Function : cm\_set\_context\_by\_index()** **Function : cm_set_context_by_index()**
:: ::
@ -384,7 +384,7 @@ The actual method of storing the ``context`` pointers is implementation specific
For example, SP-MIN stores the pointers in the array ``sp_min_cpu_ctx_ptr`` For example, SP-MIN stores the pointers in the array ``sp_min_cpu_ctx_ptr``
declared in ``sp_min_main.c``. declared in ``sp_min_main.c``.
**Function : cm\_get\_context()** **Function : cm_get_context()**
:: ::
@ -398,7 +398,7 @@ context pointers are stored prior to invoking this API. The ``security_state``
will always be non-secure when called by PSCI library and this argument will always be non-secure when called by PSCI library and this argument
is retained for compatibility with BL31. is retained for compatibility with BL31.
**Function : cm\_get\_context\_by\_index()** **Function : cm_get_context_by_index()**
:: ::
@ -423,25 +423,25 @@ Runtime Software for integration with the PSCI library.
The mandatory platform APIs are: The mandatory platform APIs are:
- plat\_my\_core\_pos - plat_my_core_pos
- plat\_core\_pos\_by\_mpidr - plat_core_pos_by_mpidr
- plat\_get\_syscnt\_freq2 - plat_get_syscnt_freq2
- plat\_get\_power\_domain\_tree\_desc - plat_get_power_domain_tree_desc
- plat\_setup\_psci\_ops - plat_setup_psci_ops
- plat\_reset\_handler - plat_reset_handler
- plat\_panic\_handler - plat_panic_handler
- plat\_get\_my\_stack - plat_get_my_stack
The mandatory platform macros are: The mandatory platform macros are:
- PLATFORM\_CORE\_COUNT - PLATFORM_CORE_COUNT
- PLAT\_MAX\_PWR\_LVL - PLAT_MAX_PWR_LVL
- PLAT\_NUM\_PWR\_DOMAINS - PLAT_NUM_PWR_DOMAINS
- CACHE\_WRITEBACK\_GRANULE - CACHE_WRITEBACK_GRANULE
- PLAT\_MAX\_OFF\_STATE - PLAT_MAX_OFF_STATE
- PLAT\_MAX\_RET\_STATE - PLAT_MAX_RET_STATE
- PLAT\_MAX\_PWR\_LVL\_STATES (optional) - PLAT_MAX_PWR_LVL_STATES (optional)
- PLAT\_PCPU\_DATA\_SIZE (optional) - PLAT_PCPU_DATA_SIZE (optional)
The details of these APIs/macros can be found in `Porting Guide`_. The details of these APIs/macros can be found in `Porting Guide`_.
@ -486,50 +486,50 @@ enabled/re-targeted back to the current CPU.
A brief description of each callback is given below: A brief description of each callback is given below:
- svc\_on, svc\_off, svc\_on\_finish - svc_on, svc_off, svc_on_finish
The ``svc_on``, ``svc_off`` callbacks are called during PSCI\_CPU\_ON, The ``svc_on``, ``svc_off`` callbacks are called during PSCI_CPU_ON,
PSCI\_CPU\_OFF APIs respectively. The ``svc_on_finish`` is called when the PSCI_CPU_OFF APIs respectively. The ``svc_on_finish`` is called when the
target CPU of PSCI\_CPU\_ON API powers up and executes the target CPU of PSCI_CPU_ON API powers up and executes the
``psci_warmboot_entrypoint()`` PSCI library interface. ``psci_warmboot_entrypoint()`` PSCI library interface.
- svc\_suspend, svc\_suspend\_finish - svc_suspend, svc_suspend_finish
The ``svc_suspend`` callback is called during power down bu either The ``svc_suspend`` callback is called during power down bu either
PSCI\_SUSPEND or PSCI\_SYSTEM\_SUSPEND APIs. The ``svc_suspend_finish`` is PSCI_SUSPEND or PSCI_SYSTEM_SUSPEND APIs. The ``svc_suspend_finish`` is
called when the CPU wakes up from suspend and executes the called when the CPU wakes up from suspend and executes the
``psci_warmboot_entrypoint()`` PSCI library interface. The ``max_off_pwrlvl`` ``psci_warmboot_entrypoint()`` PSCI library interface. The ``max_off_pwrlvl``
(first parameter) denotes the highest power domain level being powered down (first parameter) denotes the highest power domain level being powered down
to or woken up from suspend. to or woken up from suspend.
- svc\_system\_off, svc\_system\_reset - svc_system_off, svc_system_reset
These callbacks are called during PSCI\_SYSTEM\_OFF and PSCI\_SYSTEM\_RESET These callbacks are called during PSCI_SYSTEM_OFF and PSCI_SYSTEM_RESET
PSCI APIs respectively. PSCI APIs respectively.
- svc\_migrate\_info - svc_migrate_info
This callback is called in response to PSCI\_MIGRATE\_INFO\_TYPE or This callback is called in response to PSCI_MIGRATE_INFO_TYPE or
PSCI\_MIGRATE\_INFO\_UP\_CPU APIs. The return value of this callback must PSCI_MIGRATE_INFO_UP_CPU APIs. The return value of this callback must
correspond to the return value of PSCI\_MIGRATE\_INFO\_TYPE API as described correspond to the return value of PSCI_MIGRATE_INFO_TYPE API as described
in `PSCI spec`_. If the secure payload is a Uniprocessor (UP) in `PSCI spec`_. If the secure payload is a Uniprocessor (UP)
implementation, then it must update the mpidr of the CPU it is resident in implementation, then it must update the mpidr of the CPU it is resident in
via ``resident_cpu`` (first argument). The updates to ``resident_cpu`` is via ``resident_cpu`` (first argument). The updates to ``resident_cpu`` is
ignored if the secure payload is a multiprocessor (MP) implementation. ignored if the secure payload is a multiprocessor (MP) implementation.
- svc\_migrate - svc_migrate
This callback is only relevant if the secure payload in EL3 Runtime This callback is only relevant if the secure payload in EL3 Runtime
Software is a Uniprocessor (UP) implementation and supports migration from Software is a Uniprocessor (UP) implementation and supports migration from
the current CPU ``from_cpu`` (first argument) to another CPU ``to_cpu`` the current CPU ``from_cpu`` (first argument) to another CPU ``to_cpu``
(second argument). This callback is called in response to PSCI\_MIGRATE (second argument). This callback is called in response to PSCI_MIGRATE
API. This callback is never called if the secure payload is a API. This callback is never called if the secure payload is a
Multiprocessor (MP) implementation. Multiprocessor (MP) implementation.
CPU operations CPU operations
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~
The CPU operations (cpu\_ops) framework implement power down sequence specific The CPU operations (cpu_ops) framework implement power down sequence specific
to the CPU and the details of which can be found in the to the CPU and the details of which can be found in the
``CPU specific operations framework`` section of `Firmware Design`_. The TF-A ``CPU specific operations framework`` section of `Firmware Design`_. The TF-A
tree implements the ``cpu_ops`` for various supported CPUs and the EL3 Runtime tree implements the ``cpu_ops`` for various supported CPUs and the EL3 Runtime

View File

@ -91,7 +91,7 @@ TF-A has a `services`_ directory in the source tree under which
each owning entity can place the implementation of its runtime service. The each owning entity can place the implementation of its runtime service. The
`PSCI`_ implementation is located here in the `lib/psci`_ directory. `PSCI`_ implementation is located here in the `lib/psci`_ directory.
Runtime service sources will need to include the `runtime\_svc.h`_ header file. Runtime service sources will need to include the `runtime_svc.h`_ header file.
Registering a runtime service Registering a runtime service
----------------------------- -----------------------------
@ -140,7 +140,7 @@ to ensure that the following conditions are met:
#. The ``_type`` is one of ``SMC_TYPE_FAST`` or ``SMC_TYPE_YIELD`` #. The ``_type`` is one of ``SMC_TYPE_FAST`` or ``SMC_TYPE_YIELD``
#. ``_setup`` and ``_smch`` routines have been specified #. ``_setup`` and ``_smch`` routines have been specified
`std\_svc\_setup.c`_ provides an example of registering a runtime service: `std_svc_setup.c`_ provides an example of registering a runtime service:
.. code:: c .. code:: c
@ -310,6 +310,6 @@ provide this information....
.. _Firmware Design: ./firmware-design.rst .. _Firmware Design: ./firmware-design.rst
.. _services: ../services .. _services: ../services
.. _lib/psci: ../lib/psci .. _lib/psci: ../lib/psci
.. _runtime\_svc.h: ../include/common/runtime_svc.h .. _runtime_svc.h: ../include/common/runtime_svc.h
.. _smccc.h: ../include/lib/smccc.h .. _smccc.h: ../include/lib/smccc.h
.. _std\_svc\_setup.c: ../services/std_svc/std_svc_setup.c .. _std_svc_setup.c: ../services/std_svc/std_svc_setup.c

View File

@ -59,7 +59,7 @@ The keys used to establish the CoT are:
- **Trusted world key** - **Trusted world key**
The private part is used to sign the key certificates corresponding to the The private part is used to sign the key certificates corresponding to the
secure world images (SCP\_BL2, BL31 and BL32). The public part is stored in secure world images (SCP_BL2, BL31 and BL32). The public part is stored in
one of the extension fields in the trusted world certificate. one of the extension fields in the trusted world certificate.
- **Non-trusted world key** - **Non-trusted world key**
@ -70,7 +70,7 @@ The keys used to establish the CoT are:
- **BL3-X keys** - **BL3-X keys**
For each of SCP\_BL2, BL31, BL32 and BL33, the private part is used to For each of SCP_BL2, BL31, BL32 and BL33, the private part is used to
sign the content certificate for the BL3-X image. The public part is stored sign the content certificate for the BL3-X image. The public part is stored
in one of the extension fields in the corresponding key certificate. in one of the extension fields in the corresponding key certificate.
@ -78,7 +78,7 @@ The following images are included in the CoT:
- BL1 - BL1
- BL2 - BL2
- SCP\_BL2 (optional) - SCP_BL2 (optional)
- BL31 - BL31
- BL33 - BL33
- BL32 (optional) - BL32 (optional)
@ -96,14 +96,14 @@ The following certificates are used to authenticate the images.
public part of the trusted world key and the public part of the non-trusted public part of the trusted world key and the public part of the non-trusted
world key. world key.
- **SCP\_BL2 key certificate** - **SCP_BL2 key certificate**
It is self-signed with the trusted world key. It contains the public part of It is self-signed with the trusted world key. It contains the public part of
the SCP\_BL2 key. the SCP_BL2 key.
- **SCP\_BL2 content certificate** - **SCP_BL2 content certificate**
It is self-signed with the SCP\_BL2 key. It contains a hash of the SCP\_BL2 It is self-signed with the SCP_BL2 key. It contains a hash of the SCP_BL2
image. image.
- **BL31 key certificate** - **BL31 key certificate**
@ -133,8 +133,8 @@ The following certificates are used to authenticate the images.
It is self-signed with the BL33 key. It contains a hash of the BL33 image. It is self-signed with the BL33 key. It contains a hash of the BL33 image.
The SCP\_BL2 and BL32 certificates are optional, but they must be present if the The SCP_BL2 and BL32 certificates are optional, but they must be present if the
corresponding SCP\_BL2 or BL32 images are present. corresponding SCP_BL2 or BL32 images are present.
Trusted Board Boot Sequence Trusted Board Boot Sequence
--------------------------- ---------------------------
@ -160,8 +160,8 @@ if any of the steps fail.
registers. If the comparison succeeds, BL2 reads and saves the trusted and registers. If the comparison succeeds, BL2 reads and saves the trusted and
non-trusted world public keys from the verified certificate. non-trusted world public keys from the verified certificate.
The next two steps are executed for each of the SCP\_BL2, BL31 & BL32 images. The next two steps are executed for each of the SCP_BL2, BL31 & BL32 images.
The steps for the optional SCP\_BL2 and BL32 images are skipped if these images The steps for the optional SCP_BL2 and BL32 images are skipped if these images
are not present. are not present.
- BL2 loads and verifies the BL3x key certificate. The certificate signature - BL2 loads and verifies the BL3x key certificate. The certificate signature

View File

@ -197,7 +197,7 @@ Building TF-A
- (AArch32 only) Currently only ``PLAT=fvp`` is supported. - (AArch32 only) Currently only ``PLAT=fvp`` is supported.
- (AArch32 only) ``AARCH32_SP`` is the AArch32 EL3 Runtime Software and it - (AArch32 only) ``AARCH32_SP`` is the AArch32 EL3 Runtime Software and it
corresponds to the BL32 image. A minimal ``AARCH32_SP``, sp\_min, is corresponds to the BL32 image. A minimal ``AARCH32_SP``, sp_min, is
provided by TF-A to demonstrate how PSCI Library can be integrated with provided by TF-A to demonstrate how PSCI Library can be integrated with
an AArch32 EL3 Runtime Software. Some AArch32 EL3 Runtime Software may an AArch32 EL3 Runtime Software. Some AArch32 EL3 Runtime Software may
include other runtime services, for example Trusted OS services. A guide include other runtime services, for example Trusted OS services. A guide
@ -324,7 +324,7 @@ Common build options
where applicable). Defaults to a string that contains the time and date of where applicable). Defaults to a string that contains the time and date of
the compilation. the compilation.
- ``BUILD_STRING``: Input string for VERSION\_STRING, which allows the TF-A - ``BUILD_STRING``: Input string for VERSION_STRING, which allows the TF-A
build to be uniquely identified. Defaults to the current git commit id. build to be uniquely identified. Defaults to the current git commit id.
- ``CFLAGS``: Extra user options appended on the compiler's command line in - ``CFLAGS``: Extra user options appended on the compiler's command line in
@ -479,12 +479,12 @@ Common build options
- ``GENERATE_COT``: Boolean flag used to build and execute the ``cert_create`` - ``GENERATE_COT``: Boolean flag used to build and execute the ``cert_create``
tool to create certificates as per the Chain of Trust described in tool to create certificates as per the Chain of Trust described in
`Trusted Board Boot`_. The build system then calls ``fiptool`` to `Trusted Board Boot`_. The build system then calls ``fiptool`` to
include the certificates in the FIP and FWU\_FIP. Default value is '0'. include the certificates in the FIP and FWU_FIP. Default value is '0'.
Specify both ``TRUSTED_BOARD_BOOT=1`` and ``GENERATE_COT=1`` to include support Specify both ``TRUSTED_BOARD_BOOT=1`` and ``GENERATE_COT=1`` to include support
for the Trusted Board Boot feature in the BL1 and BL2 images, to generate for the Trusted Board Boot feature in the BL1 and BL2 images, to generate
the corresponding certificates, and to include those certificates in the the corresponding certificates, and to include those certificates in the
FIP and FWU\_FIP. FIP and FWU_FIP.
Note that if ``TRUSTED_BOARD_BOOT=0`` and ``GENERATE_COT=1``, the BL1 and BL2 Note that if ``TRUSTED_BOARD_BOOT=0`` and ``GENERATE_COT=1``, the BL1 and BL2
images will not include support for Trusted Board Boot. The FIP will still images will not include support for Trusted Board Boot. The FIP will still
@ -492,7 +492,7 @@ Common build options
Chain of Trust on the host machine through other mechanisms. Chain of Trust on the host machine through other mechanisms.
Note that if ``TRUSTED_BOARD_BOOT=1`` and ``GENERATE_COT=0``, the BL1 and BL2 Note that if ``TRUSTED_BOARD_BOOT=1`` and ``GENERATE_COT=0``, the BL1 and BL2
images will include support for Trusted Board Boot, but the FIP and FWU\_FIP images will include support for Trusted Board Boot, but the FIP and FWU_FIP
will not include the corresponding certificates, causing a boot failure. will not include the corresponding certificates, causing a boot failure.
- ``GICV2_G0_FOR_EL3``: Unlike GICv3, the GICv2 architecture doesn't have - ``GICV2_G0_FOR_EL3``: Unlike GICv3, the GICv2 architecture doesn't have
@ -566,7 +566,7 @@ Common build options
specifies the file that contains the Non-Trusted World private key in PEM specifies the file that contains the Non-Trusted World private key in PEM
format. If ``SAVE_KEYS=1``, this file name will be used to save the key. format. If ``SAVE_KEYS=1``, this file name will be used to save the key.
- ``NS_BL2U``: Path to NS\_BL2U image in the host file system. This image is - ``NS_BL2U``: Path to NS_BL2U image in the host file system. This image is
optional. It is only needed if the platform makefile specifies that it optional. It is only needed if the platform makefile specifies that it
is required in order to build the ``fwu_fip`` target. is required in order to build the ``fwu_fip`` target.
@ -611,7 +611,7 @@ Common build options
to use the extended format. The default value of this flag is 0, which to use the extended format. The default value of this flag is 0, which
means by default the original power-state format is used by the PSCI means by default the original power-state format is used by the PSCI
implementation. This flag should be specified by the platform makefile implementation. This flag should be specified by the platform makefile
and it governs the return value of PSCI\_FEATURES API for CPU\_SUSPEND and it governs the return value of PSCI_FEATURES API for CPU_SUSPEND
smc function id. When this option is enabled on Arm platforms, the smc function id. When this option is enabled on Arm platforms, the
option ``ARM_RECOM_STATE_ID_ENC`` needs to be set to 1 as well. option ``ARM_RECOM_STATE_ID_ENC`` needs to be set to 1 as well.
@ -629,10 +629,10 @@ Common build options
entrypoint) or 1 (CPU reset to BL31 entrypoint). entrypoint) or 1 (CPU reset to BL31 entrypoint).
The default value is 0. The default value is 0.
- ``RESET_TO_SP_MIN``: SP\_MIN is the minimal AArch32 Secure Payload provided - ``RESET_TO_SP_MIN``: SP_MIN is the minimal AArch32 Secure Payload provided
in TF-A. This flag configures SP\_MIN entrypoint as the CPU reset vector in TF-A. This flag configures SP_MIN entrypoint as the CPU reset vector
instead of the BL1 entrypoint. It can take the value 0 (CPU reset to BL1 instead of the BL1 entrypoint. It can take the value 0 (CPU reset to BL1
entrypoint) or 1 (CPU reset to SP\_MIN entrypoint). The default value is 0. entrypoint) or 1 (CPU reset to SP_MIN entrypoint). The default value is 0.
- ``ROT_KEY``: This option is used when ``GENERATE_COT=1``. It specifies the - ``ROT_KEY``: This option is used when ``GENERATE_COT=1``. It specifies the
file that contains the ROT private key in PEM format. If ``SAVE_KEYS=1``, this file that contains the ROT private key in PEM format. If ``SAVE_KEYS=1``, this
@ -642,15 +642,15 @@ Common build options
certificate generation tool to save the keys used to establish the Chain of certificate generation tool to save the keys used to establish the Chain of
Trust. Allowed options are '0' or '1'. Default is '0' (do not save). Trust. Allowed options are '0' or '1'. Default is '0' (do not save).
- ``SCP_BL2``: Path to SCP\_BL2 image in the host file system. This image is optional. - ``SCP_BL2``: Path to SCP_BL2 image in the host file system. This image is optional.
If a SCP\_BL2 image is present then this option must be passed for the ``fip`` If a SCP_BL2 image is present then this option must be passed for the ``fip``
target. target.
- ``SCP_BL2_KEY``: This option is used when ``GENERATE_COT=1``. It specifies the - ``SCP_BL2_KEY``: This option is used when ``GENERATE_COT=1``. It specifies the
file that contains the SCP\_BL2 private key in PEM format. If ``SAVE_KEYS=1``, file that contains the SCP_BL2 private key in PEM format. If ``SAVE_KEYS=1``,
this file name will be used to save the key. this file name will be used to save the key.
- ``SCP_BL2U``: Path to SCP\_BL2U image in the host file system. This image is - ``SCP_BL2U``: Path to SCP_BL2U image in the host file system. This image is
optional. It is only needed if the platform makefile specifies that it optional. It is only needed if the platform makefile specifies that it
is required in order to build the ``fwu_fip`` target. is required in order to build the ``fwu_fip`` target.
@ -689,7 +689,7 @@ Common build options
Boot feature. When set to '1', BL1 and BL2 images include support to load Boot feature. When set to '1', BL1 and BL2 images include support to load
and verify the certificates and images in a FIP, and BL1 includes support and verify the certificates and images in a FIP, and BL1 includes support
for the Firmware Update. The default value is '0'. Generation and inclusion for the Firmware Update. The default value is '0'. Generation and inclusion
of certificates in the FIP and FWU\_FIP depends upon the value of the of certificates in the FIP and FWU_FIP depends upon the value of the
``GENERATE_COT`` option. ``GENERATE_COT`` option.
Note: This option depends on ``CREATE_KEYS`` to be enabled. If the keys Note: This option depends on ``CREATE_KEYS`` to be enabled. If the keys
@ -832,8 +832,8 @@ Arm CSS platform specific build options
TF-A no longer supports earlier SCP versions. If this option is set to 1 TF-A no longer supports earlier SCP versions. If this option is set to 1
then TF-A will detect if an earlier version is in use. Default is 1. then TF-A will detect if an earlier version is in use. Default is 1.
- ``CSS_LOAD_SCP_IMAGES``: Boolean flag, which when set, adds SCP\_BL2 and - ``CSS_LOAD_SCP_IMAGES``: Boolean flag, which when set, adds SCP_BL2 and
SCP\_BL2U to the FIP and FWU\_FIP respectively, and enables them to be loaded SCP_BL2U to the FIP and FWU_FIP respectively, and enables them to be loaded
during boot. Default is 1. during boot. Default is 1.
- ``CSS_USE_SCMI_SDS_DRIVER``: Boolean flag which selects SCMI/SDS drivers - ``CSS_USE_SCMI_SDS_DRIVER``: Boolean flag which selects SCMI/SDS drivers
@ -1087,7 +1087,7 @@ Trusted Board Boot primarily consists of the following two features:
- Image Authentication, described in `Trusted Board Boot`_, and - Image Authentication, described in `Trusted Board Boot`_, and
- Firmware Update, described in `Firmware Update`_ - Firmware Update, described in `Firmware Update`_
The following steps should be followed to build FIP and (optionally) FWU\_FIP The following steps should be followed to build FIP and (optionally) FWU_FIP
images with support for these features: images with support for these features:
#. Fulfill the dependencies of the ``mbedtls`` cryptographic and image parser #. Fulfill the dependencies of the ``mbedtls`` cryptographic and image parser
@ -1150,13 +1150,13 @@ images with support for these features:
described in the TBBR-client document. These certificates can also be found described in the TBBR-client document. These certificates can also be found
in the output build directory. in the output build directory.
#. The optional FWU\_FIP contains any additional images to be loaded from #. The optional FWU_FIP contains any additional images to be loaded from
Non-Volatile storage during the `Firmware Update`_ process. To build the Non-Volatile storage during the `Firmware Update`_ process. To build the
FWU\_FIP, any FWU images required by the platform must be specified on the FWU_FIP, any FWU images required by the platform must be specified on the
command line. On Arm development platforms like Juno, these are: command line. On Arm development platforms like Juno, these are:
- NS\_BL2U. The AP non-secure Firmware Updater image. - NS_BL2U. The AP non-secure Firmware Updater image.
- SCP\_BL2U. The SCP Firmware Update Configuration image. - SCP_BL2U. The SCP Firmware Update Configuration image.
Example of Juno command line for generating both ``fwu`` and ``fwu_fip`` Example of Juno command line for generating both ``fwu`` and ``fwu_fip``
targets using RSA development: targets using RSA development:
@ -1173,15 +1173,15 @@ images with support for these features:
NS_BL2U=<path-to>/<ns_bl2u_image> \ NS_BL2U=<path-to>/<ns_bl2u_image> \
all fip fwu_fip all fip fwu_fip
Note: The BL2U image will be built by default and added to the FWU\_FIP. Note: The BL2U image will be built by default and added to the FWU_FIP.
The user may override this by adding ``BL2U=<path-to>/<bl2u_image>`` The user may override this by adding ``BL2U=<path-to>/<bl2u_image>``
to the command line above. to the command line above.
Note: Building and installing the non-secure and SCP FWU images (NS\_BL1U, Note: Building and installing the non-secure and SCP FWU images (NS_BL1U,
NS\_BL2U and SCP\_BL2U) is outside the scope of this document. NS_BL2U and SCP_BL2U) is outside the scope of this document.
The result of this build will be bl1.bin, fip.bin and fwu\_fip.bin binaries. The result of this build will be bl1.bin, fip.bin and fwu_fip.bin binaries.
Both the FIP and FWU\_FIP will include the certificates corresponding to the Both the FIP and FWU_FIP will include the certificates corresponding to the
Chain of Trust described in the TBBR-client document. These certificates Chain of Trust described in the TBBR-client document. These certificates
can also be found in the output build directory. can also be found in the output build directory.
@ -1198,7 +1198,7 @@ command:
make PLAT=<platform> [DEBUG=1] [V=1] certtool make PLAT=<platform> [DEBUG=1] [V=1] certtool
For platforms that require their own IDs in certificate files, the generic For platforms that require their own IDs in certificate files, the generic
'cert\_create' tool can be built with the following command: 'cert_create' tool can be built with the following command:
:: ::
@ -1240,9 +1240,9 @@ section for more info on selecting the right FDT to use.
make realclean make realclean
#. Obtain SCP\_BL2 (Juno) and BL33 (all platforms) #. Obtain SCP_BL2 (Juno) and BL33 (all platforms)
Use the fiptool to extract the SCP\_BL2 and BL33 images from the FIP Use the fiptool to extract the SCP_BL2 and BL33 images from the FIP
package included in the Linaro release: package included in the Linaro release:
:: ::
@ -1255,7 +1255,7 @@ section for more info on selecting the right FDT to use.
<path/to/linaro/release>/fip.bin <path/to/linaro/release>/fip.bin
The unpack operation will result in a set of binary images extracted to the The unpack operation will result in a set of binary images extracted to the
current working directory. The SCP\_BL2 image corresponds to current working directory. The SCP_BL2 image corresponds to
``scp-fw.bin`` and BL33 corresponds to ``nt-fw.bin``. ``scp-fw.bin`` and BL33 corresponds to ``nt-fw.bin``.
Note: The fiptool will complain if the images to be unpacked already Note: The fiptool will complain if the images to be unpacked already
@ -1406,7 +1406,7 @@ developing EL3 baremetal code by:
- putting the system into a known architectural state; - putting the system into a known architectural state;
- taking care of platform secure world initialization; - taking care of platform secure world initialization;
- loading the SCP\_BL2 image if required by the platform. - loading the SCP_BL2 image if required by the platform.
When booting an EL3 payload on Arm standard platforms, the configuration of the When booting an EL3 payload on Arm standard platforms, the configuration of the
TrustZone controller is simplified such that only region 0 is enabled and is TrustZone controller is simplified such that only region 0 is enabled and is
@ -1923,8 +1923,8 @@ Notes:
``--data="<path-to><bl32-binary>"@<base-address-of-bl32>`` to the new value of ``--data="<path-to><bl32-binary>"@<base-address-of-bl32>`` to the new value of
``BL32_BASE``. ``BL32_BASE``.
Running on the AEMv8 Base FVP (AArch32) with reset to SP\_MIN entrypoint Running on the AEMv8 Base FVP (AArch32) with reset to SP_MIN entrypoint
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux The following ``FVP_Base_AEMv8A-AEMv8A`` parameters should be used to boot Linux
with 8 CPUs using the AArch32 build of TF-A. with 8 CPUs using the AArch32 build of TF-A.
@ -1991,8 +1991,8 @@ boot Linux with 8 CPUs using the AArch64 build of TF-A.
--data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \ --data cluster0.cpu0="<path-to>/<kernel-binary>"@0x80080000 \
--data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000 --data cluster0.cpu0="<path-to>/<ramdisk>"@0x84000000
Running on the Cortex-A32 Base FVP (AArch32) with reset to SP\_MIN entrypoint Running on the Cortex-A32 Base FVP (AArch32) with reset to SP_MIN entrypoint
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following ``FVP_Base_Cortex-A32x4`` model parameters should be used to The following ``FVP_Base_Cortex-A32x4`` model parameters should be used to
boot Linux with 4 CPUs using the AArch32 build of TF-A. boot Linux with 4 CPUs using the AArch32 build of TF-A.

View File

@ -37,8 +37,8 @@ About version 1 and version 2
----------------------------- -----------------------------
This document focuses on version 2 of the library, whose sources are available This document focuses on version 2 of the library, whose sources are available
in the `lib/xlat\_tables\_v2`_ directory. Version 1 of the library can still be in the `lib/xlat_tables_v2`_ directory. Version 1 of the library can still be
found in `lib/xlat\_tables`_ directory but it is less flexible and doesn't found in `lib/xlat_tables`_ directory but it is less flexible and doesn't
support dynamic mapping. Although potential bug fixes will be applied to both support dynamic mapping. Although potential bug fixes will be applied to both
versions, future features enhancements will focus on version 2 and might not be versions, future features enhancements will focus on version 2 and might not be
back-ported to version 1. Therefore, it is recommended to use version 2, back-ported to version 1. Therefore, it is recommended to use version 2,
@ -69,7 +69,7 @@ map. It is one of the key interfaces to the library. It is identified by:
- its attributes; - its attributes;
- its mapping granularity (optional). - its mapping granularity (optional).
See the ``struct mmap_region`` type in `xlat\_tables\_v2.h`_. See the ``struct mmap_region`` type in `xlat_tables_v2.h`_.
The user usually provides a list of such mmap regions to map and lets the The user usually provides a list of such mmap regions to map and lets the
library transpose that in a set of translation tables. As a result, the library library transpose that in a set of translation tables. As a result, the library
@ -80,7 +80,7 @@ normal memory) as well as the memory access permissions (read-only or
read-write, executable or not, secure or non-secure, and so on). In the case of read-write, executable or not, secure or non-secure, and so on). In the case of
the EL1&0 translation regime, the attributes also specify whether the region is the EL1&0 translation regime, the attributes also specify whether the region is
a User region (EL0) or Privileged region (EL1). See the ``MT_xxx`` definitions a User region (EL0) or Privileged region (EL1). See the ``MT_xxx`` definitions
in `xlat\_tables\_v2.h`_. Note that for the EL1&0 translation regime the Execute in `xlat_tables_v2.h`_. Note that for the EL1&0 translation regime the Execute
Never attribute is set simultaneously for both EL1 and EL0. Never attribute is set simultaneously for both EL1 and EL0.
The granularity controls the translation table level to go down to when mapping The granularity controls the translation table level to go down to when mapping
@ -208,7 +208,7 @@ Library APIs
------------ ------------
The external APIs exposed by this library are declared and documented in the The external APIs exposed by this library are declared and documented in the
`xlat\_tables\_v2.h`_ header file. This should be the reference point for `xlat_tables_v2.h`_ header file. This should be the reference point for
getting information about the usage of the different APIs this library getting information about the usage of the different APIs this library
provides. This section just provides some extra details and clarifications. provides. This section just provides some extra details and clarifications.
@ -291,7 +291,7 @@ The library is divided into 4 modules:
provides functions such as ``mmap_add_region_ctx`` that let the caller specify provides functions such as ``mmap_add_region_ctx`` that let the caller specify
the translation tables context affected by them. the translation tables context affected by them.
See `xlat\_tables\_core.c`_. See `xlat_tables_core.c`_.
- **Active context module** - **Active context module**
@ -300,14 +300,14 @@ The library is divided into 4 modules:
This module provides functions such as ``mmap_add_region``, that directly This module provides functions such as ``mmap_add_region``, that directly
affect the BL image using them. affect the BL image using them.
See `xlat\_tables\_context.c`_. See `xlat_tables_context.c`_.
- **Utilities module** - **Utilities module**
Provides additional functionality like debug print of the current state of the Provides additional functionality like debug print of the current state of the
translation tables and helpers to query memory attributes and to modify them. translation tables and helpers to query memory attributes and to modify them.
See `xlat\_tables\_utils.c`_. See `xlat_tables_utils.c`_.
- **Architectural module** - **Architectural module**
@ -316,7 +316,7 @@ The library is divided into 4 modules:
MMU, or calculate the Physical Address Space size. They do not need a MMU, or calculate the Physical Address Space size. They do not need a
translation context to work on. translation context to work on.
See `aarch32/xlat\_tables\_arch.c`_ and `aarch64/xlat\_tables\_arch.c`_. See `aarch32/xlat_tables_arch.c`_ and `aarch64/xlat_tables_arch.c`_.
From mmap regions to translation tables From mmap regions to translation tables
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@ -416,13 +416,13 @@ mapping cannot be cached in the TLBs.
*Copyright (c) 2017-2018, Arm Limited and Contributors. All rights reserved.* *Copyright (c) 2017-2018, Arm Limited and Contributors. All rights reserved.*
.. _lib/xlat\_tables\_v2: ../lib/xlat_tables_v2 .. _lib/xlat_tables_v2: ../lib/xlat_tables_v2
.. _lib/xlat\_tables: ../lib/xlat_tables .. _lib/xlat_tables: ../lib/xlat_tables
.. _xlat\_tables\_v2.h: ../include/lib/xlat_tables/xlat_tables_v2.h .. _xlat_tables_v2.h: ../include/lib/xlat_tables/xlat_tables_v2.h
.. _xlat\_tables\_context.c: ../lib/xlat_tables_v2/xlat_tables_context.c .. _xlat_tables_context.c: ../lib/xlat_tables_v2/xlat_tables_context.c
.. _xlat\_tables\_core.c: ../lib/xlat_tables_v2/xlat_tables_core.c .. _xlat_tables_core.c: ../lib/xlat_tables_v2/xlat_tables_core.c
.. _xlat\_tables\_utils.c: ../lib/xlat_tables_v2/xlat_tables_utils.c .. _xlat_tables_utils.c: ../lib/xlat_tables_v2/xlat_tables_utils.c
.. _aarch32/xlat\_tables\_arch.c: ../lib/xlat_tables_v2/aarch32/xlat_tables_arch.c .. _aarch32/xlat_tables_arch.c: ../lib/xlat_tables_v2/aarch32/xlat_tables_arch.c
.. _aarch64/xlat\_tables\_arch.c: ../lib/xlat_tables_v2/aarch64/xlat_tables_arch.c .. _aarch64/xlat_tables_arch.c: ../lib/xlat_tables_v2/aarch64/xlat_tables_arch.c
.. _Porting Guide: porting-guide.rst .. _Porting Guide: porting-guide.rst
.. |Alignment Example| image:: ./diagrams/xlat_align.png?raw=true .. |Alignment Example| image:: ./diagrams/xlat_align.png?raw=true