xref: /rk3399_ARM-atf/docs/about/features.rst (revision 8eb9490b61c65288eaacbf229afbbe0f99484c86)
1*8eb9490bSPaul BeesleyFeature Overview
2*8eb9490bSPaul Beesley================
3*8eb9490bSPaul Beesley
4*8eb9490bSPaul BeesleyThis page provides an overview of the current |TF-A| feature set. For a full
5*8eb9490bSPaul Beesleydescription of these features and their implementation details, please see
6*8eb9490bSPaul Beesley:ref:`Firmware Design` and supporting documentation.
7*8eb9490bSPaul Beesley
8*8eb9490bSPaul BeesleyThe :ref:`Change Log & Release Notes` provides details of changes made since the
9*8eb9490bSPaul Beesleylast release.
10*8eb9490bSPaul Beesley
11*8eb9490bSPaul BeesleyCurrent features
12*8eb9490bSPaul Beesley----------------
13*8eb9490bSPaul Beesley
14*8eb9490bSPaul Beesley-  Initialization of the secure world, for example exception vectors, control
15*8eb9490bSPaul Beesley   registers and interrupts for the platform.
16*8eb9490bSPaul Beesley
17*8eb9490bSPaul Beesley-  Library support for CPU specific reset and power down sequences. This
18*8eb9490bSPaul Beesley   includes support for errata workarounds and the latest Arm DynamIQ CPUs.
19*8eb9490bSPaul Beesley
20*8eb9490bSPaul Beesley-  Drivers to enable standard initialization of Arm System IP, for example
21*8eb9490bSPaul Beesley   Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI),
22*8eb9490bSPaul Beesley   Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone
23*8eb9490bSPaul Beesley   Controller (TZC).
24*8eb9490bSPaul Beesley
25*8eb9490bSPaul Beesley-  A generic |SCMI| driver to interface with conforming power controllers, for
26*8eb9490bSPaul Beesley   example the Arm System Control Processor (SCP).
27*8eb9490bSPaul Beesley
28*8eb9490bSPaul Beesley-  SMC (Secure Monitor Call) handling, conforming to the `SMC Calling
29*8eb9490bSPaul Beesley   Convention`_ using an EL3 runtime services framework.
30*8eb9490bSPaul Beesley
31*8eb9490bSPaul Beesley-  |PSCI| library support for CPU, cluster and system power management
32*8eb9490bSPaul Beesley   use-cases.
33*8eb9490bSPaul Beesley   This library is pre-integrated with the AArch64 EL3 Runtime Software, and
34*8eb9490bSPaul Beesley   is also suitable for integration with other AArch32 EL3 Runtime Software,
35*8eb9490bSPaul Beesley   for example an AArch32 Secure OS.
36*8eb9490bSPaul Beesley
37*8eb9490bSPaul Beesley-  A minimal AArch32 Secure Payload (SP\_MIN) to demonstrate |PSCI| library
38*8eb9490bSPaul Beesley   integration with AArch32 EL3 Runtime Software.
39*8eb9490bSPaul Beesley
40*8eb9490bSPaul Beesley-  Secure Monitor library code such as world switching, EL1 context management
41*8eb9490bSPaul Beesley   and interrupt routing.
42*8eb9490bSPaul Beesley   When a Secure-EL1 Payload (SP) is present, for example a Secure OS, the
43*8eb9490bSPaul Beesley   AArch64 EL3 Runtime Software must be integrated with a Secure Payload
44*8eb9490bSPaul Beesley   Dispatcher (SPD) component to customize the interaction with the SP.
45*8eb9490bSPaul Beesley
46*8eb9490bSPaul Beesley-  A Test SP and SPD to demonstrate AArch64 Secure Monitor functionality and SP
47*8eb9490bSPaul Beesley   interaction with PSCI.
48*8eb9490bSPaul Beesley
49*8eb9490bSPaul Beesley-  SPDs for the `OP-TEE Secure OS`_, `NVIDIA Trusted Little Kernel`_
50*8eb9490bSPaul Beesley   and `Trusty Secure OS`_.
51*8eb9490bSPaul Beesley
52*8eb9490bSPaul Beesley-  A Trusted Board Boot implementation, conforming to all mandatory TBBR
53*8eb9490bSPaul Beesley   requirements. This includes image authentication, Firmware Update (or
54*8eb9490bSPaul Beesley   recovery mode), and packaging of the various firmware images into a
55*8eb9490bSPaul Beesley   Firmware Image Package (FIP).
56*8eb9490bSPaul Beesley
57*8eb9490bSPaul Beesley-  Pre-integration of TBB with the Arm CryptoCell product, to take advantage of
58*8eb9490bSPaul Beesley   its hardware Root of Trust and crypto acceleration services.
59*8eb9490bSPaul Beesley
60*8eb9490bSPaul Beesley-  Reliability, Availability, and Serviceability (RAS) functionality, including
61*8eb9490bSPaul Beesley
62*8eb9490bSPaul Beesley   -  A Secure Partition Manager (SPM) to manage Secure Partitions in
63*8eb9490bSPaul Beesley      Secure-EL0, which can be used to implement simple management and
64*8eb9490bSPaul Beesley      security services.
65*8eb9490bSPaul Beesley
66*8eb9490bSPaul Beesley   -  An |SDEI| dispatcher to route interrupt-based |SDEI| events.
67*8eb9490bSPaul Beesley
68*8eb9490bSPaul Beesley   -  An Exception Handling Framework (EHF) that allows dispatching of EL3
69*8eb9490bSPaul Beesley      interrupts to their registered handlers, to facilitate firmware-first
70*8eb9490bSPaul Beesley      error handling.
71*8eb9490bSPaul Beesley
72*8eb9490bSPaul Beesley-  A dynamic configuration framework that enables each of the firmware images
73*8eb9490bSPaul Beesley   to be configured at runtime if required by the platform. It also enables
74*8eb9490bSPaul Beesley   loading of a hardware configuration (for example, a kernel device tree)
75*8eb9490bSPaul Beesley   as part of the FIP, to be passed through the firmware stages.
76*8eb9490bSPaul Beesley
77*8eb9490bSPaul Beesley-  Support for alternative boot flows, for example to support platforms where
78*8eb9490bSPaul Beesley   the EL3 Runtime Software is loaded using other firmware or a separate
79*8eb9490bSPaul Beesley   secure system processor, or where a non-TF-A ROM expects BL2 to be loaded
80*8eb9490bSPaul Beesley   at EL3.
81*8eb9490bSPaul Beesley
82*8eb9490bSPaul Beesley-  Support for the GCC, LLVM and Arm Compiler 6 toolchains.
83*8eb9490bSPaul Beesley
84*8eb9490bSPaul Beesley-  Support for combining several libraries into a "romlib" image that may be
85*8eb9490bSPaul Beesley   shared across images to reduce memory footprint. The romlib image is stored
86*8eb9490bSPaul Beesley   in ROM but is accessed through a jump-table that may be stored
87*8eb9490bSPaul Beesley   in read-write memory, allowing for the library code to be patched.
88*8eb9490bSPaul Beesley
89*8eb9490bSPaul Beesley-  A prototype implementation of a Secure Partition Manager (SPM) that is based
90*8eb9490bSPaul Beesley   on the SPCI Alpha 1 and SPRT draft specifications.
91*8eb9490bSPaul Beesley
92*8eb9490bSPaul Beesley-  Support for ARMv8.3 pointer authentication in the normal and secure worlds.
93*8eb9490bSPaul Beesley   The use of pointer authentication in the normal world is enabled whenever
94*8eb9490bSPaul Beesley   architectural support is available, without the need for additional build
95*8eb9490bSPaul Beesley   flags. Use of pointer authentication in the secure world remains an
96*8eb9490bSPaul Beesley   experimental configuration at this time and requires the
97*8eb9490bSPaul Beesley   ``BRANCH_PROTECTION`` option to be set to non-zero.
98*8eb9490bSPaul Beesley
99*8eb9490bSPaul Beesley-  Position-Independent Executable (PIE) support. Initially for BL31 only, with
100*8eb9490bSPaul Beesley   further support to be added in a future release.
101*8eb9490bSPaul Beesley
102*8eb9490bSPaul BeesleyStill to come
103*8eb9490bSPaul Beesley-------------
104*8eb9490bSPaul Beesley
105*8eb9490bSPaul Beesley-  Support for additional platforms.
106*8eb9490bSPaul Beesley
107*8eb9490bSPaul Beesley-  Refinements to Position Independent Executable (PIE) support.
108*8eb9490bSPaul Beesley
109*8eb9490bSPaul Beesley-  Refinements to the SPCI-based SPM implementation as the draft SPCI and SPRT
110*8eb9490bSPaul Beesley   specifications continue to evolve.
111*8eb9490bSPaul Beesley
112*8eb9490bSPaul Beesley-  Documentation enhancements.
113*8eb9490bSPaul Beesley
114*8eb9490bSPaul Beesley-  Ongoing support for new architectural features, CPUs and System IP.
115*8eb9490bSPaul Beesley
116*8eb9490bSPaul Beesley-  Ongoing support for new Arm system architecture specifications.
117*8eb9490bSPaul Beesley
118*8eb9490bSPaul Beesley-  Ongoing security hardening, optimization and quality improvements.
119*8eb9490bSPaul Beesley
120*8eb9490bSPaul Beesley.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf
121*8eb9490bSPaul Beesley.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os
122*8eb9490bSPaul Beesley.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary
123*8eb9490bSPaul Beesley.. _Trusty Secure OS: https://source.android.com/security/trusty
124*8eb9490bSPaul Beesley
125*8eb9490bSPaul Beesley--------------
126*8eb9490bSPaul Beesley
127*8eb9490bSPaul Beesley*Copyright (c) 2019, Arm Limited. All rights reserved.*
128