xref: /rk3399_ARM-atf/docs/about/features.rst (revision 9494de0798770244d476dc1e725233be6a554ed6)
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
25*9494de07SManish Pandey-  Secure Monitor library code such as world switching, EL2/EL1 context
26*9494de07SManish Pandey   management and interrupt routing.
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*9494de07SManish Pandey-  A generic |SCMI| driver to interface with conforming power controllers, for
38*9494de07SManish Pandey   example the Arm System Control Processor (SCP).
39*9494de07SManish Pandey
40bbf0a1e4SPaul Beesley-  A minimal AArch32 Secure Payload (*SP_MIN*) to demonstrate |PSCI| library
418eb9490bSPaul Beesley   integration with AArch32 EL3 Runtime Software.
428eb9490bSPaul Beesley
43*9494de07SManish Pandey-  Secure partition manager dispatcher(SPMD) with following two configurations:
44*9494de07SManish Pandey
45*9494de07SManish Pandey   -  S-EL2 SPMC implementation, widely compliant with FF-A v1.1 EAC0 and initial
46*9494de07SManish Pandey      support of FF-A v1.2.
47*9494de07SManish Pandey
48*9494de07SManish Pandey   -  EL3 SPMC implementation, compliant with a subset of FF-A v1.1 EAC0.
49*9494de07SManish Pandey
50*9494de07SManish Pandey-  Support for Arm CCA based on FEAT_RME which supports authenticated boot and
51*9494de07SManish Pandey   execution of RMM with the necessary routing of RMI commands as specified in
52*9494de07SManish Pandey   RMM Beta 0 Specification.
538eb9490bSPaul Beesley
548eb9490bSPaul Beesley-  A Test SP and SPD to demonstrate AArch64 Secure Monitor functionality and SP
558eb9490bSPaul Beesley   interaction with PSCI.
568eb9490bSPaul Beesley
57b0980e58SFlorian Lugou-  SPDs for the `OP-TEE Secure OS`_, `NVIDIA Trusted Little Kernel`_,
58b0980e58SFlorian Lugou   `Trusty Secure OS`_ and `ProvenCore Secure OS`_.
598eb9490bSPaul Beesley
608eb9490bSPaul Beesley-  A Trusted Board Boot implementation, conforming to all mandatory TBBR
61*9494de07SManish Pandey   requirements. This includes image authentication, Firmware recovery,
62*9494de07SManish Pandey   Firmware encryption and packaging of the various firmware images into a
638eb9490bSPaul Beesley   Firmware Image Package (FIP).
648eb9490bSPaul Beesley
65*9494de07SManish Pandey-  Measured boot support with PoC to showcase its interaction with firmware TPM
66*9494de07SManish Pandey   (fTPM) service implemneted on top of OP-TEE.
67*9494de07SManish Pandey
68*9494de07SManish Pandey-  Support for Dynamic Root of Trust for Measurement (DRTM).
69*9494de07SManish Pandey
70*9494de07SManish Pandey-  Following firmware update mechanisms available:
71*9494de07SManish Pandey
72*9494de07SManish Pandey   -  PSA Firmware Update (PSA FWU)
73*9494de07SManish Pandey
74*9494de07SManish Pandey   -  TBBR Firmware Update (TBBR FWU)
758eb9490bSPaul Beesley
768eb9490bSPaul Beesley-  Reliability, Availability, and Serviceability (RAS) functionality, including
778eb9490bSPaul Beesley
788eb9490bSPaul Beesley   -  A Secure Partition Manager (SPM) to manage Secure Partitions in
798eb9490bSPaul Beesley      Secure-EL0, which can be used to implement simple management and
808eb9490bSPaul Beesley      security services.
818eb9490bSPaul Beesley
828eb9490bSPaul Beesley   -  An |SDEI| dispatcher to route interrupt-based |SDEI| events.
838eb9490bSPaul Beesley
848eb9490bSPaul Beesley   -  An Exception Handling Framework (EHF) that allows dispatching of EL3
858eb9490bSPaul Beesley      interrupts to their registered handlers, to facilitate firmware-first
868eb9490bSPaul Beesley      error handling.
878eb9490bSPaul Beesley
888eb9490bSPaul Beesley-  A dynamic configuration framework that enables each of the firmware images
898eb9490bSPaul Beesley   to be configured at runtime if required by the platform. It also enables
908eb9490bSPaul Beesley   loading of a hardware configuration (for example, a kernel device tree)
918eb9490bSPaul Beesley   as part of the FIP, to be passed through the firmware stages.
92c2c150e7SLouis Mayencourt   This feature is now incorporated inside the firmware configuration framework
93700e7685SManish Pandey   (fconf).
948eb9490bSPaul Beesley
958eb9490bSPaul Beesley-  Support for alternative boot flows, for example to support platforms where
968eb9490bSPaul Beesley   the EL3 Runtime Software is loaded using other firmware or a separate
978eb9490bSPaul Beesley   secure system processor, or where a non-TF-A ROM expects BL2 to be loaded
988eb9490bSPaul Beesley   at EL3.
998eb9490bSPaul Beesley
100*9494de07SManish Pandey-  Support for Errata management firmware interface.
101*9494de07SManish Pandey
1028eb9490bSPaul Beesley-  Support for the GCC, LLVM and Arm Compiler 6 toolchains.
1038eb9490bSPaul Beesley
1048eb9490bSPaul Beesley-  Support for combining several libraries into a "romlib" image that may be
1058eb9490bSPaul Beesley   shared across images to reduce memory footprint. The romlib image is stored
1068eb9490bSPaul Beesley   in ROM but is accessed through a jump-table that may be stored
1078eb9490bSPaul Beesley   in read-write memory, allowing for the library code to be patched.
1088eb9490bSPaul Beesley
109*9494de07SManish Pandey-  Position-Independent Executable (PIE) support.
1108eb9490bSPaul Beesley
1118eb9490bSPaul BeesleyStill to come
1128eb9490bSPaul Beesley-------------
1138eb9490bSPaul Beesley
1148eb9490bSPaul Beesley-  Support for additional platforms.
1158eb9490bSPaul Beesley
1168eb9490bSPaul Beesley-  Documentation enhancements.
1178eb9490bSPaul Beesley
1188eb9490bSPaul Beesley-  Ongoing support for new architectural features, CPUs and System IP.
1198eb9490bSPaul Beesley
1208eb9490bSPaul Beesley-  Ongoing support for new Arm system architecture specifications.
1218eb9490bSPaul Beesley
1228eb9490bSPaul Beesley-  Ongoing security hardening, optimization and quality improvements.
1238eb9490bSPaul Beesley
1243ba55a3cSlaurenw-arm.. _SMC Calling Convention: https://developer.arm.com/docs/den0028/latest
1258eb9490bSPaul Beesley.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os
1268eb9490bSPaul Beesley.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary
1278eb9490bSPaul Beesley.. _Trusty Secure OS: https://source.android.com/security/trusty
128b0980e58SFlorian Lugou.. _ProvenCore Secure OS: https://provenrun.com/products/provencore/
1298eb9490bSPaul Beesley
1308eb9490bSPaul Beesley--------------
1318eb9490bSPaul Beesley
132*9494de07SManish Pandey*Copyright (c) 2019-2023, Arm Limited. All rights reserved.*
133