xref: /rk3399_ARM-atf/docs/about/features.rst (revision bbf0a1e43479ccfcbb0229cca744d17165749dce)
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
6*bbf0a1e4SPaul 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
37*bbf0a1e4SPaul 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.
768eb9490bSPaul Beesley
778eb9490bSPaul Beesley-  Support for alternative boot flows, for example to support platforms where
788eb9490bSPaul Beesley   the EL3 Runtime Software is loaded using other firmware or a separate
798eb9490bSPaul Beesley   secure system processor, or where a non-TF-A ROM expects BL2 to be loaded
808eb9490bSPaul Beesley   at EL3.
818eb9490bSPaul Beesley
828eb9490bSPaul Beesley-  Support for the GCC, LLVM and Arm Compiler 6 toolchains.
838eb9490bSPaul Beesley
848eb9490bSPaul Beesley-  Support for combining several libraries into a "romlib" image that may be
858eb9490bSPaul Beesley   shared across images to reduce memory footprint. The romlib image is stored
868eb9490bSPaul Beesley   in ROM but is accessed through a jump-table that may be stored
878eb9490bSPaul Beesley   in read-write memory, allowing for the library code to be patched.
888eb9490bSPaul Beesley
898eb9490bSPaul Beesley-  A prototype implementation of a Secure Partition Manager (SPM) that is based
908eb9490bSPaul Beesley   on the SPCI Alpha 1 and SPRT draft specifications.
918eb9490bSPaul Beesley
928eb9490bSPaul Beesley-  Support for ARMv8.3 pointer authentication in the normal and secure worlds.
938eb9490bSPaul Beesley   The use of pointer authentication in the normal world is enabled whenever
948eb9490bSPaul Beesley   architectural support is available, without the need for additional build
958eb9490bSPaul Beesley   flags. Use of pointer authentication in the secure world remains an
968eb9490bSPaul Beesley   experimental configuration at this time and requires the
978eb9490bSPaul Beesley   ``BRANCH_PROTECTION`` option to be set to non-zero.
988eb9490bSPaul Beesley
998eb9490bSPaul Beesley-  Position-Independent Executable (PIE) support. Initially for BL31 only, with
1008eb9490bSPaul Beesley   further support to be added in a future release.
1018eb9490bSPaul Beesley
1028eb9490bSPaul BeesleyStill to come
1038eb9490bSPaul Beesley-------------
1048eb9490bSPaul Beesley
1058eb9490bSPaul Beesley-  Support for additional platforms.
1068eb9490bSPaul Beesley
1078eb9490bSPaul Beesley-  Refinements to Position Independent Executable (PIE) support.
1088eb9490bSPaul Beesley
109*bbf0a1e4SPaul Beesley-  Continued support for the draft SPCI specification, to enable the use of
110*bbf0a1e4SPaul Beesley   secure partition management in the secure world.
1118eb9490bSPaul Beesley
1128eb9490bSPaul Beesley-  Documentation enhancements.
1138eb9490bSPaul Beesley
1148eb9490bSPaul Beesley-  Ongoing support for new architectural features, CPUs and System IP.
1158eb9490bSPaul Beesley
1168eb9490bSPaul Beesley-  Ongoing support for new Arm system architecture specifications.
1178eb9490bSPaul Beesley
1188eb9490bSPaul Beesley-  Ongoing security hardening, optimization and quality improvements.
1198eb9490bSPaul Beesley
1208eb9490bSPaul Beesley.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf
1218eb9490bSPaul Beesley.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os
1228eb9490bSPaul Beesley.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary
1238eb9490bSPaul Beesley.. _Trusty Secure OS: https://source.android.com/security/trusty
1248eb9490bSPaul Beesley
1258eb9490bSPaul Beesley--------------
1268eb9490bSPaul Beesley
1278eb9490bSPaul Beesley*Copyright (c) 2019, Arm Limited. All rights reserved.*
128