xref: /rk3399_ARM-atf/docs/about/features.rst (revision c2c150e7c5bb9f56bd482a6ed98e28a7f1962edf)
18eb9490bSPaul BeesleyFeature Overview
28eb9490bSPaul Beesley================
38eb9490bSPaul Beesley
48eb9490bSPaul BeesleyThis page provides an overview of the current |TF-A| feature set. For a full
58eb9490bSPaul Beesleydescription of these features and their implementation details, please see
6bbf0a1e4SPaul Beesleythe documents that are part of the *Components* and *System Design* chapters.
78eb9490bSPaul Beesley
88eb9490bSPaul BeesleyThe :ref:`Change Log & Release Notes` provides details of changes made since the
98eb9490bSPaul Beesleylast release.
108eb9490bSPaul Beesley
118eb9490bSPaul BeesleyCurrent features
128eb9490bSPaul Beesley----------------
138eb9490bSPaul Beesley
148eb9490bSPaul Beesley-  Initialization of the secure world, for example exception vectors, control
158eb9490bSPaul Beesley   registers and interrupts for the platform.
168eb9490bSPaul Beesley
178eb9490bSPaul Beesley-  Library support for CPU specific reset and power down sequences. This
188eb9490bSPaul Beesley   includes support for errata workarounds and the latest Arm DynamIQ CPUs.
198eb9490bSPaul Beesley
208eb9490bSPaul Beesley-  Drivers to enable standard initialization of Arm System IP, for example
218eb9490bSPaul Beesley   Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI),
228eb9490bSPaul Beesley   Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone
238eb9490bSPaul Beesley   Controller (TZC).
248eb9490bSPaul Beesley
258eb9490bSPaul Beesley-  A generic |SCMI| driver to interface with conforming power controllers, for
268eb9490bSPaul Beesley   example the Arm System Control Processor (SCP).
278eb9490bSPaul Beesley
288eb9490bSPaul Beesley-  SMC (Secure Monitor Call) handling, conforming to the `SMC Calling
298eb9490bSPaul Beesley   Convention`_ using an EL3 runtime services framework.
308eb9490bSPaul Beesley
318eb9490bSPaul Beesley-  |PSCI| library support for CPU, cluster and system power management
328eb9490bSPaul Beesley   use-cases.
338eb9490bSPaul Beesley   This library is pre-integrated with the AArch64 EL3 Runtime Software, and
348eb9490bSPaul Beesley   is also suitable for integration with other AArch32 EL3 Runtime Software,
358eb9490bSPaul Beesley   for example an AArch32 Secure OS.
368eb9490bSPaul Beesley
37bbf0a1e4SPaul Beesley-  A minimal AArch32 Secure Payload (*SP_MIN*) to demonstrate |PSCI| library
388eb9490bSPaul Beesley   integration with AArch32 EL3 Runtime Software.
398eb9490bSPaul Beesley
408eb9490bSPaul Beesley-  Secure Monitor library code such as world switching, EL1 context management
418eb9490bSPaul Beesley   and interrupt routing.
428eb9490bSPaul Beesley   When a Secure-EL1 Payload (SP) is present, for example a Secure OS, the
438eb9490bSPaul Beesley   AArch64 EL3 Runtime Software must be integrated with a Secure Payload
448eb9490bSPaul Beesley   Dispatcher (SPD) component to customize the interaction with the SP.
458eb9490bSPaul Beesley
468eb9490bSPaul Beesley-  A Test SP and SPD to demonstrate AArch64 Secure Monitor functionality and SP
478eb9490bSPaul Beesley   interaction with PSCI.
488eb9490bSPaul Beesley
498eb9490bSPaul Beesley-  SPDs for the `OP-TEE Secure OS`_, `NVIDIA Trusted Little Kernel`_
508eb9490bSPaul Beesley   and `Trusty Secure OS`_.
518eb9490bSPaul Beesley
528eb9490bSPaul Beesley-  A Trusted Board Boot implementation, conforming to all mandatory TBBR
538eb9490bSPaul Beesley   requirements. This includes image authentication, Firmware Update (or
548eb9490bSPaul Beesley   recovery mode), and packaging of the various firmware images into a
558eb9490bSPaul Beesley   Firmware Image Package (FIP).
568eb9490bSPaul Beesley
578eb9490bSPaul Beesley-  Pre-integration of TBB with the Arm CryptoCell product, to take advantage of
588eb9490bSPaul Beesley   its hardware Root of Trust and crypto acceleration services.
598eb9490bSPaul Beesley
608eb9490bSPaul Beesley-  Reliability, Availability, and Serviceability (RAS) functionality, including
618eb9490bSPaul Beesley
628eb9490bSPaul Beesley   -  A Secure Partition Manager (SPM) to manage Secure Partitions in
638eb9490bSPaul Beesley      Secure-EL0, which can be used to implement simple management and
648eb9490bSPaul Beesley      security services.
658eb9490bSPaul Beesley
668eb9490bSPaul Beesley   -  An |SDEI| dispatcher to route interrupt-based |SDEI| events.
678eb9490bSPaul Beesley
688eb9490bSPaul Beesley   -  An Exception Handling Framework (EHF) that allows dispatching of EL3
698eb9490bSPaul Beesley      interrupts to their registered handlers, to facilitate firmware-first
708eb9490bSPaul Beesley      error handling.
718eb9490bSPaul Beesley
728eb9490bSPaul Beesley-  A dynamic configuration framework that enables each of the firmware images
738eb9490bSPaul Beesley   to be configured at runtime if required by the platform. It also enables
748eb9490bSPaul Beesley   loading of a hardware configuration (for example, a kernel device tree)
758eb9490bSPaul Beesley   as part of the FIP, to be passed through the firmware stages.
76*c2c150e7SLouis Mayencourt   This feature is now incorporated inside the firmware configuration framework
77*c2c150e7SLouis Mayencourt   (fconf), which is still flagged as experimental.
788eb9490bSPaul Beesley
798eb9490bSPaul Beesley-  Support for alternative boot flows, for example to support platforms where
808eb9490bSPaul Beesley   the EL3 Runtime Software is loaded using other firmware or a separate
818eb9490bSPaul Beesley   secure system processor, or where a non-TF-A ROM expects BL2 to be loaded
828eb9490bSPaul Beesley   at EL3.
838eb9490bSPaul Beesley
848eb9490bSPaul Beesley-  Support for the GCC, LLVM and Arm Compiler 6 toolchains.
858eb9490bSPaul Beesley
868eb9490bSPaul Beesley-  Support for combining several libraries into a "romlib" image that may be
878eb9490bSPaul Beesley   shared across images to reduce memory footprint. The romlib image is stored
888eb9490bSPaul Beesley   in ROM but is accessed through a jump-table that may be stored
898eb9490bSPaul Beesley   in read-write memory, allowing for the library code to be patched.
908eb9490bSPaul Beesley
91495553d5Slaurenw-arm-  Support for the Secure Partition Manager Dispatcher (SPMD) component as a
92495553d5Slaurenw-arm   new standard service.
938eb9490bSPaul Beesley
948eb9490bSPaul Beesley-  Support for ARMv8.3 pointer authentication in the normal and secure worlds.
958eb9490bSPaul Beesley   The use of pointer authentication in the normal world is enabled whenever
968eb9490bSPaul Beesley   architectural support is available, without the need for additional build
978eb9490bSPaul Beesley   flags. Use of pointer authentication in the secure world remains an
988eb9490bSPaul Beesley   experimental configuration at this time and requires the
998eb9490bSPaul Beesley   ``BRANCH_PROTECTION`` option to be set to non-zero.
1008eb9490bSPaul Beesley
101495553d5Slaurenw-arm-  Position-Independent Executable (PIE) support. Currently for BL2, BL31, and
102495553d5Slaurenw-arm   TSP, with further support to be added in a future release.
1038eb9490bSPaul Beesley
1048eb9490bSPaul BeesleyStill to come
1058eb9490bSPaul Beesley-------------
1068eb9490bSPaul Beesley
1078eb9490bSPaul Beesley-  Support for additional platforms.
1088eb9490bSPaul Beesley
1098eb9490bSPaul Beesley-  Refinements to Position Independent Executable (PIE) support.
1108eb9490bSPaul Beesley
111bbf0a1e4SPaul Beesley-  Continued support for the draft SPCI specification, to enable the use of
112bbf0a1e4SPaul Beesley   secure partition management in the secure world.
1138eb9490bSPaul Beesley
1148eb9490bSPaul Beesley-  Documentation enhancements.
1158eb9490bSPaul Beesley
1168eb9490bSPaul Beesley-  Ongoing support for new architectural features, CPUs and System IP.
1178eb9490bSPaul Beesley
1188eb9490bSPaul Beesley-  Ongoing support for new Arm system architecture specifications.
1198eb9490bSPaul Beesley
1208eb9490bSPaul Beesley-  Ongoing security hardening, optimization and quality improvements.
1218eb9490bSPaul Beesley
1228eb9490bSPaul Beesley.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf
1238eb9490bSPaul Beesley.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os
1248eb9490bSPaul Beesley.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary
1258eb9490bSPaul Beesley.. _Trusty Secure OS: https://source.android.com/security/trusty
1268eb9490bSPaul Beesley
1278eb9490bSPaul Beesley--------------
1288eb9490bSPaul Beesley
129495553d5Slaurenw-arm*Copyright (c) 2020, Arm Limited. All rights reserved.*
130