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