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