diff --git a/docs/about/acknowledgements.rst b/docs/about/acknowledgements.rst new file mode 100644 index 0000000..a9f6451 --- /dev/null +++ b/docs/about/acknowledgements.rst @@ -0,0 +1,21 @@ +Contributor Acknowledgements +============================ + +.. note:: + This file is only relevant for legacy contributions, to acknowledge the + specific contributors referred to in "Arm Limited and Contributors" copyright + notices. As contributors are now encouraged to put their name or company name + directly into the copyright notices, this file is not relevant for new + contributions. + +- Linaro Limited +- Marvell International Ltd. +- NVIDIA Corporation +- NXP Semiconductors +- Socionext Inc. +- STMicroelectronics +- Xilinx, Inc. + +-------------- + +*Copyright (c) 2019, Arm Limited. All rights reserved.* diff --git a/docs/about/contact.rst b/docs/about/contact.rst new file mode 100644 index 0000000..af6668d --- /dev/null +++ b/docs/about/contact.rst @@ -0,0 +1,17 @@ +Support & Contact +----------------- + +We welcome any feedback on TF-A. If you think you have found a security +vulnerability, please report this using the process defined in the TF-A +:ref:`Security Handling` document. + +For all other feedback, please use the `issue tracker`_ or our `mailing list`_. + +Arm licensees may contact Arm directly via their partner managers. + +.. _issue tracker: https://issues.trustedfirmware.org +.. _mailing list: https://lists.trustedfirmware.org/mailman/listinfo/tf-a + +-------------- + +*Copyright (c) 2019, Arm Limited. All rights reserved.* diff --git a/docs/about/features.rst b/docs/about/features.rst new file mode 100644 index 0000000..9df2894 --- /dev/null +++ b/docs/about/features.rst @@ -0,0 +1,127 @@ +Feature Overview +================ + +This page provides an overview of the current |TF-A| feature set. For a full +description of these features and their implementation details, please see +:ref:`Firmware Design` and supporting documentation. + +The :ref:`Change Log & Release Notes` provides details of changes made since the +last release. + +Current features +---------------- + +- Initialization of the secure world, for example exception vectors, control + registers and interrupts for the platform. + +- Library support for CPU specific reset and power down sequences. This + includes support for errata workarounds and the latest Arm DynamIQ CPUs. + +- Drivers to enable standard initialization of Arm System IP, for example + Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI), + Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone + Controller (TZC). + +- A generic |SCMI| driver to interface with conforming power controllers, for + example the Arm System Control Processor (SCP). + +- SMC (Secure Monitor Call) handling, conforming to the `SMC Calling + Convention`_ using an EL3 runtime services framework. + +- |PSCI| library support for CPU, cluster and system power management + use-cases. + This library is pre-integrated with the AArch64 EL3 Runtime Software, and + is also suitable for integration with other AArch32 EL3 Runtime Software, + for example an AArch32 Secure OS. + +- A minimal AArch32 Secure Payload (SP\_MIN) to demonstrate |PSCI| library + integration with AArch32 EL3 Runtime Software. + +- Secure Monitor library code such as world switching, EL1 context management + and interrupt routing. + When a Secure-EL1 Payload (SP) is present, for example a Secure OS, the + AArch64 EL3 Runtime Software must be integrated with a Secure Payload + Dispatcher (SPD) component to customize the interaction with the SP. + +- A Test SP and SPD to demonstrate AArch64 Secure Monitor functionality and SP + interaction with PSCI. + +- SPDs for the `OP-TEE Secure OS`_, `NVIDIA Trusted Little Kernel`_ + and `Trusty Secure OS`_. + +- A Trusted Board Boot implementation, conforming to all mandatory TBBR + requirements. This includes image authentication, Firmware Update (or + recovery mode), and packaging of the various firmware images into a + Firmware Image Package (FIP). + +- Pre-integration of TBB with the Arm CryptoCell product, to take advantage of + its hardware Root of Trust and crypto acceleration services. + +- Reliability, Availability, and Serviceability (RAS) functionality, including + + - A Secure Partition Manager (SPM) to manage Secure Partitions in + Secure-EL0, which can be used to implement simple management and + security services. + + - An |SDEI| dispatcher to route interrupt-based |SDEI| events. + + - An Exception Handling Framework (EHF) that allows dispatching of EL3 + interrupts to their registered handlers, to facilitate firmware-first + error handling. + +- A dynamic configuration framework that enables each of the firmware images + to be configured at runtime if required by the platform. It also enables + loading of a hardware configuration (for example, a kernel device tree) + as part of the FIP, to be passed through the firmware stages. + +- Support for alternative boot flows, for example to support platforms where + the EL3 Runtime Software is loaded using other firmware or a separate + secure system processor, or where a non-TF-A ROM expects BL2 to be loaded + at EL3. + +- Support for the GCC, LLVM and Arm Compiler 6 toolchains. + +- Support for combining several libraries into a "romlib" image that may be + shared across images to reduce memory footprint. The romlib image is stored + in ROM but is accessed through a jump-table that may be stored + in read-write memory, allowing for the library code to be patched. + +- A prototype implementation of a Secure Partition Manager (SPM) that is based + on the SPCI Alpha 1 and SPRT draft specifications. + +- Support for ARMv8.3 pointer authentication in the normal and secure worlds. + The use of pointer authentication in the normal world is enabled whenever + architectural support is available, without the need for additional build + flags. Use of pointer authentication in the secure world remains an + experimental configuration at this time and requires the + ``BRANCH_PROTECTION`` option to be set to non-zero. + +- Position-Independent Executable (PIE) support. Initially for BL31 only, with + further support to be added in a future release. + +Still to come +------------- + +- Support for additional platforms. + +- Refinements to Position Independent Executable (PIE) support. + +- Refinements to the SPCI-based SPM implementation as the draft SPCI and SPRT + specifications continue to evolve. + +- Documentation enhancements. + +- Ongoing support for new architectural features, CPUs and System IP. + +- Ongoing support for new Arm system architecture specifications. + +- Ongoing security hardening, optimization and quality improvements. + +.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf +.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os +.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary +.. _Trusty Secure OS: https://source.android.com/security/trusty + +-------------- + +*Copyright (c) 2019, Arm Limited. All rights reserved.* diff --git a/docs/about/index.rst b/docs/about/index.rst new file mode 100644 index 0000000..3a10266 --- /dev/null +++ b/docs/about/index.rst @@ -0,0 +1,13 @@ +About +===== + +.. toctree:: + :maxdepth: 1 + :caption: Contents + :numbered: + + features + release-information + maintainers + contact + acknowledgements diff --git a/docs/about/maintainers.rst b/docs/about/maintainers.rst new file mode 100644 index 0000000..86e445a --- /dev/null +++ b/docs/about/maintainers.rst @@ -0,0 +1,316 @@ +Maintainers +=========== + +Trusted Firmware-A (TF-A) is an Arm maintained project. All contributions are +ultimately merged by the maintainers listed below. Technical ownership of some +parts of the codebase is delegated to the sub-maintainers listed below. An +acknowledgement from these sub-maintainers may be required before the +maintainers merge a contribution. + +Main maintainers +---------------- +:M: Dan Handley +:G: `danh-arm`_ +:M: Soby Mathew +:G: `soby-mathew`_ +:M: Sandrine Bailleux +:G: `sandrine-bailleux-arm`_ +:M: Alexei Fedorov +:G: `AlexeiFedorov`_ +:M: Paul Beesley +:G: `pbeesley-arm`_ +:M: John Tsichritzis +:G: `jts-arm`_ + +Allwinner ARMv8 platform port +----------------------------- +:M: Andre Przywara +:G: `Andre-ARM`_ +:M: Samuel Holland +:G: `smaeul`_ +:F: docs/plat/allwinner.rst +:F: plat/allwinner/ +:F: drivers/allwinner/ + +Amlogic Meson S905 (GXBB) platform port +--------------------------------------- +:M: Andre Przywara +:G: `Andre-ARM`_ +:F: docs/plat/meson-gxbb.rst +:F: drivers/amlogic/ +:F: plat/amlogic/gxbb/ + +Amlogic Meson S905x (GXL) platform port +--------------------------------------- +:M: Remi Pommarel +:G: `remi-triplefault`_ +:F: docs/plat/meson-gxl.rst +:F: drivers/amlogic/gxl +:F: plat/amlogic/gxl/ + +Amlogic Meson S905X2 (G12A) platform port +----------------------------------------- +:M: Carlo Caione +:G: `carlocaione`_ +:F: docs/plat/meson-g12a.rst +:F: drivers/amlogic/g12a +:F: plat/amlogic/g12a/ + +Armv7-A architecture port +------------------------- +:M: Etienne Carriere +:G: `etienne-lms`_ + +Arm System Guidance for Infrastructure / Mobile FVP platforms +------------------------------------------------------------- +:M: Nariman Poushin +:G: `npoushin`_ +:M: Thomas Abraham +:G: `thomas-arm`_ +:F: plat/arm/css/sgi/ +:F: plat/arm/css/sgm/ +:F: plat/arm/board/sgi575/ +:F: plat/arm/board/sgm775/ + +Console API framework +--------------------- +:M: Julius Werner +:G: `jwerner-chromium`_ +:F: drivers/console/ +:F: include/drivers/console.h +:F: plat/common/aarch64/crash_console_helpers.S + +coreboot support libraries +-------------------------- +:M: Julius Werner +:G: `jwerner-chromium`_ +:F: drivers/coreboot/ +:F: include/drivers/coreboot/ +:F: include/lib/coreboot.h +:F: lib/coreboot/ + +eMMC/UFS drivers +---------------- +:M: Haojian Zhuang +:G: `hzhuang1`_ +:F: drivers/partition/ +:F: drivers/synopsys/emmc/ +:F: drivers/synopsys/ufs/ +:F: drivers/ufs/ +:F: include/drivers/dw_ufs.h +:F: include/drivers/ufs.h +:F: include/drivers/synopsys/dw_mmc.h + +HiSilicon HiKey and HiKey960 platform ports +------------------------------------------- +:M: Haojian Zhuang +:G: `hzhuang1`_ +:F: docs/plat/hikey.rst +:F: docs/plat/hikey960.rst +:F: plat/hisilicon/hikey/ +:F: plat/hisilicon/hikey960/ + +HiSilicon Poplar platform port +------------------------------ +:M: Shawn Guo +:G: `shawnguo2`_ +:F: docs/plat/poplar.rst +:F: plat/hisilicon/poplar/ + +Intel SocFPGA platform ports +---------------------------- +:M: Tien Hock Loh +:G: `thloh85-intel`_ +:M: Hadi Asyrafi +:G: mabdulha +:F: plat/intel/soc +:F: drivers/intel/soc/ + +MediaTek platform ports +----------------------- +:M: Yidi Lin (林以廸) +:G: `mtk09422`_ +:F: plat/mediatek/ + +Marvell platform ports and SoC drivers +-------------------------------------- +:M: Konstantin Porotchkin +:G: `kostapr`_ +:F: docs/marvell/ +:F: plat/marvell/ +:F: drivers/marvell/ +:F: tools/marvell/ + +NVidia platform ports +--------------------- +:M: Varun Wadekar +:G: `vwadekar`_ +:F: docs/plat/nvidia-tegra.rst +:F: include/lib/cpus/aarch64/denver.h +:F: lib/cpus/aarch64/denver.S +:F: plat/nvidia/ + +NXP QorIQ Layerscape platform ports +----------------------------------- +:M: Jiafei Pan +:G: `qoriq-open-source`_ +:F: docs/plat/ls1043a.rst +:F: plat/layerscape/ + +NXP i.MX 7 WaRP7 platform port and SoC drivers +---------------------------------------------- +:M: Bryan O'Donoghue +:G: `bryanodonoghue`_ +:M: Jun Nie +:G: `niej`_ +:F: docs/plat/warp7.rst +:F: plat/imx/common/ +:F: plat/imx/imx7/ +:F: drivers/imx/timer/ +:F: drivers/imx/uart/ +:F: drivers/imx/usdhc/ + +NXP i.MX 8 platform port +------------------------ +:M: Anson Huang +:G: `Anson-Huang`_ +:F: docs/plat/imx8.rst +:F: plat/imx/ + +NXP i.MX8M platform port +------------------------ +:M: Jacky Bai +:G: `JackyBai`_ +:F: doc/plat/imx8m.rst +:F: plat/imx/imx8m/ + +OP-TEE dispatcher +----------------- +:M: Jens Wiklander +:G: `jenswi-linaro`_ +:F: docs/spd/optee-dispatcher.rst +:F: services/spd/opteed/ + +QEMU platform port +------------------ +:M: Jens Wiklander +:G: `jenswi-linaro`_ +:F: docs/plat/qemu.rst +:F: plat/qemu/ + +Raspberry Pi 3 platform port +---------------------------- +:M: Ying-Chun Liu (PaulLiu) +:G: `grandpaul`_ +:F: docs/plat/rpi3.rst +:F: plat/rpi3/ +:F: drivers/rpi3/ +:F: include/drivers/rpi3/ + +Renesas rcar-gen3 platform port +------------------------------- +:M: Jorge Ramirez-Ortiz +:G: `ldts`_ +:M: Marek Vasut +:G: `marex`_ +:F: docs/plat/rcar-gen3.rst +:F: plat/renesas/rcar +:F: drivers/renesas/rcar +:F: tools/renesas/rcar_layout_create + +RockChip platform port +---------------------- +:M: Tony Xie +:G: `TonyXie06`_ +:G: `rockchip-linux`_ +:M: Heiko Stuebner +:G: `mmind`_ +:F: plat/rockchip/ + +STM32MP1 platform port +---------------------- +:M: Yann Gautier +:G: `Yann-lms`_ +:F: docs/plat/stm32mp1.rst +:F: drivers/st/ +:F: fdts/stm32\* +:F: include/drivers/st/ +:F: include/dt-bindings/\*/stm32\* +:F: plat/st/ +:F: tools/stm32image/ + +Synquacer platform port +----------------------- +:M: Sumit Garg +:G: `b49020`_ +:F: docs/plat/synquacer.rst +:F: plat/socionext/synquacer/ + +Texas Instruments platform port +------------------------------- +:M: Andrew F. Davis +:G: `glneo`_ +:F: docs/plat/ti-k3.rst +:F: plat/ti/ + +TLK/Trusty secure payloads +-------------------------- +:M: Varun Wadekar +:G: `vwadekar`_ +:F: docs/spd/tlk-dispatcher.rst +:F: docs/spd/trusty-dispatcher.rst +:F: include/bl32/payloads/tlk.h +:F: services/spd/tlkd/ +:F: services/spd/trusty/ + +UniPhier platform port +---------------------- +:M: Masahiro Yamada +:G: `masahir0y`_ +:F: docs/plat/socionext-uniphier.rst +:F: plat/socionext/uniphier/ + +Xilinx platform port +-------------------- +:M: Siva Durga Prasad Paladugu +:G: `sivadur`_ +:F: docs/plat/xilinx-zynqmp.rst +:F: plat/xilinx/ + +.. _AlexeiFedorov: https://github.com/AlexeiFedorov +.. _Andre-ARM: https://github.com/Andre-ARM +.. _Anson-Huang: https://github.com/Anson-Huang +.. _bryanodonoghue: https://github.com/bryanodonoghue +.. _b49020: https://github.com/b49020 +.. _carlocaione: https://github.com/carlocaione +.. _danh-arm: https://github.com/danh-arm +.. _etienne-lms: https://github.com/etienne-lms +.. _glneo: https://github.com/glneo +.. _grandpaul: https://github.com/grandpaul +.. _hzhuang1: https://github.com/hzhuang1 +.. _JackyBai: https://github.com/JackyBai +.. _jenswi-linaro: https://github.com/jenswi-linaro +.. _jts-arm: https://github.com/jts-arm +.. _jwerner-chromium: https://github.com/jwerner-chromium +.. _kostapr: https://github.com/kostapr +.. _ldts: https://github.com/ldts +.. _marex: https://github.com/marex +.. _masahir0y: https://github.com/masahir0y +.. _mmind: https://github.com/mmind +.. _mtk09422: https://github.com/mtk09422 +.. _niej: https://github.com/niej +.. _npoushin: https://github.com/npoushin +.. _pbeesley-arm: https://github.com/pbeesley-arm +.. _qoriq-open-source: https://github.com/qoriq-open-source +.. _remi-triplefault: https://github.com/repk +.. _rockchip-linux: https://github.com/rockchip-linux +.. _sandrine-bailleux-arm: https://github.com/sandrine-bailleux-arm +.. _shawnguo2: https://github.com/shawnguo2 +.. _sivadur: https://github.com/sivadur +.. _smaeul: https://github.com/smaeul +.. _soby-mathew: https://github.com/soby-mathew +.. _thloh85-intel: https://github.com/thloh85-intel +.. _thomas-arm: https://github.com/thomas-arm +.. _TonyXie06: https://github.com/TonyXie06 +.. _vwadekar: https://github.com/vwadekar +.. _Yann-lms: https://github.com/Yann-lms diff --git a/docs/about/release-information.rst b/docs/about/release-information.rst new file mode 100644 index 0000000..e264e51 --- /dev/null +++ b/docs/about/release-information.rst @@ -0,0 +1,82 @@ +Release Processes +================= + +Project Release Cadence +----------------------- + +The project currently aims to do a release once every 6 months which will be +tagged on the master branch. There will be a code freeze (stop merging +non-essential PRs) up to 4 weeks prior to the target release date. The release +candidates will start appearing after this and only bug fixes or updates +required for the release will be merged. The maintainers are free to use their +judgement on what PRs are essential for the release. A release branch may be +created after code freeze if there are significant PRs that need merging onto +the integration branch during the merge window. + +The release testing will be performed on release candidates and depending on +issues found, additional release candidates may be created to fix the issues. + +:: + + |<----------6 months---------->| + |<---4 weeks--->| |<---4 weeks--->| + +-----------------------------------------------------------> time + | | | | + code freeze ver w.x code freeze ver y.z + + +Upcoming Releases +~~~~~~~~~~~~~~~~~ + +These are the estimated dates for the upcoming release. These may change +depending on project requirement and partner feedback. + ++-----------------+---------------------------+------------------------------+ +| Release Version | Target Date | Expected Code Freeze | ++=================+===========================+==============================+ +| v2.0 | 1st week of Oct '18 | 1st week of Sep '18 | ++-----------------+---------------------------+------------------------------+ +| v2.1 | 5th week of Mar '19 | 1st week of Mar '19 | ++-----------------+---------------------------+------------------------------+ + +Removal of Deprecated Interfaces +-------------------------------- + +As mentioned in the :ref:`Platform Compatibility Policy`, this is a live +document cataloging all the deprecated interfaces in TF-A project and the +Release version after which it will be removed. + ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| Interface | Deprecation | Removed | Comments | +| | Date | after | | +| | | Release | | ++================================+=============+=========+=========================================================+ +| Legacy Console API | Jan '18 | v2.1 | Deprecated in favour of ``MULTI_CONSOLE_API`` | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| Weak default | Oct '18 | v2.1 | The default implementations are defined in | +| ``plat_crash_console_*`` | | | ``crash_console_helpers.S``. The platforms have to | +| APIs | | | define ``plat_crash_console_*``. | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| ``finish_console_register`` | Oct '18 | v2.1 | The old version of the macro is deprecated. See commit | +| macro in | | | cc5859c_ for more details. | +| ``MULTI_CONSOLE_API`` | | | | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| Types ``tzc_action_t`` and | Oct '18 | v2.1 | Using logical operations such as OR in enumerations | +| ``tzc_region_attributes_t`` | | | goes against the MISRA guidelines. | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| Macro ``EL_IMPLEMENTED()`` | Oct '18 | v2.1 | Deprecated in favour of ``el_implemented()``. | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| ``get_afflvl_shift()``, | Dec '18 | v2.1 | Removed. | +| ``mpidr_mask_lower_afflvls()``,| | | | +| and ``eret()``. | | | | ++--------------------------------+-------------+---------+---------------------------------------------------------+ +| Extra include paths in the | Jan '18 | v2.1 | Now it is needed to use the full path of the common | +| Makefile in ``INCLUDES``. | | | header files. More information in commit 09d40e0e0828_. | ++--------------------------------+-------------+---------+---------------------------------------------------------+ + +-------------- + +*Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved.* + +.. _cc5859c: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=cc5859ca19ff546c35eb0331000dae090b6eabcf +.. _09d40e0e0828: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=09d40e0e08283a249e7dce0e106c07c5141f9b7e diff --git a/docs/acknowledgements.rst b/docs/acknowledgements.rst deleted file mode 100644 index 74b77ff..0000000 --- a/docs/acknowledgements.rst +++ /dev/null @@ -1,17 +0,0 @@ -Contributor Acknowledgements -============================ - -.. note:: - This file is only relevant for legacy contributions, to acknowledge the - specific contributors referred to in "Arm Limited and Contributors" copyright - notices. As contributors are now encouraged to put their name or company name - directly into the copyright notices, this file is not relevant for new - contributions. - -- Linaro Limited -- Marvell International Ltd. -- NVIDIA Corporation -- NXP Semiconductors -- Socionext Inc. -- STMicroelectronics -- Xilinx, Inc. diff --git a/docs/index.rst b/docs/index.rst index 4cd1798..8981072 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -6,6 +6,7 @@ :hidden: Home + about/index getting_started/index process/index components/index @@ -14,14 +15,9 @@ perf/index security_advisories/index change-log - acknowledgements glossary - maintainers license -.. contents:: On This Page - :depth: 3 - Trusted Firmware-A (TF-A) provides a reference implementation of secure world software for `Armv7-A and Armv8-A`_, including a `Secure Monitor`_ executing at Exception Level 3 (EL3). It implements various Arm interface standards, @@ -47,101 +43,41 @@ with reference implementations of Arm standards to benefit developers working with Armv7-A and Armv8-A TrustZone technology. -Functionality -------------- +Getting Started +--------------- -- Initialization of the secure world, for example exception vectors, control - registers and interrupts for the platform. +The |TF-A| documentation contains guidance for obtaining and building the +software for existing, supported platforms, as well as supporting information +for porting the software to a new platform. -- Library support for CPU specific reset and power down sequences. This - includes support for errata workarounds and the latest Arm DynamIQ CPUs. +The **About** chapter gives a high-level overview of |TF-A| features as well as +some information on the project and how it is organized. -- Drivers to enable standard initialization of Arm System IP, for example - Generic Interrupt Controller (GIC), Cache Coherent Interconnect (CCI), - Cache Coherent Network (CCN), Network Interconnect (NIC) and TrustZone - Controller (TZC). +Refer to the documents in the **Getting Started** chapter for information about +the prerequisites and requirements for building |TF-A|. -- A generic `SCMI`_ driver to interface with conforming power controllers, for - example the Arm System Control Processor (SCP). +The **Processes & Policies** chapter explains the project's release schedule +and process, how security disclosures are handled, and the guidelines for +contributing to the project (including the coding style). -- SMC (Secure Monitor Call) handling, conforming to the `SMC Calling - Convention`_ using an EL3 runtime services framework. +The **Components** chapter holds documents that explain specific components +that make up the |TF-A| software, the :ref:`Exception Handling Framework`, for +example. -- `PSCI`_ library support for CPU, cluster and system power management - use-cases. - This library is pre-integrated with the AArch64 EL3 Runtime Software, and - is also suitable for integration with other AArch32 EL3 Runtime Software, - for example an AArch32 Secure OS. +In the **System Design** chapter you will find documents that explain the +design of portions of the software that involve more than one component, such +as the :ref:`Trusted Board Boot` process. -- A minimal AArch32 Secure Payload (SP\_MIN) to demonstrate `PSCI`_ library - integration with AArch32 EL3 Runtime Software. +**Platform Ports** provides a list of the supported hardware and software-model +platforms that are supported upstream in |TF-A|. Most of these platforms also +have additional documentation that has been provided by the maintainers of the +platform. -- Secure Monitor library code such as world switching, EL1 context management - and interrupt routing. - When a Secure-EL1 Payload (SP) is present, for example a Secure OS, the - AArch64 EL3 Runtime Software must be integrated with a Secure Payload - Dispatcher (SPD) component to customize the interaction with the SP. +The results of any performance evaluations are added to the +**Performance & Testing** chapter. -- A Test SP and SPD to demonstrate AArch64 Secure Monitor functionality and SP - interaction with PSCI. - -- SPDs for the `OP-TEE Secure OS`_, `NVIDIA Trusted Little Kernel`_ - and `Trusty Secure OS`_. - -- A Trusted Board Boot implementation, conforming to all mandatory TBBR - requirements. This includes image authentication, Firmware Update (or - recovery mode), and packaging of the various firmware images into a - Firmware Image Package (FIP). - -- Pre-integration of TBB with the Arm CryptoCell product, to take advantage of - its hardware Root of Trust and crypto acceleration services. - -- Reliability, Availability, and Serviceability (RAS) functionality, including - - - A Secure Partition Manager (SPM) to manage Secure Partitions in - Secure-EL0, which can be used to implement simple management and - security services. - - - An |SDEI| dispatcher to route interrupt-based |SDEI| events. - - - An Exception Handling Framework (EHF) that allows dispatching of EL3 - interrupts to their registered handlers, to facilitate firmware-first - error handling. - -- A dynamic configuration framework that enables each of the firmware images - to be configured at runtime if required by the platform. It also enables - loading of a hardware configuration (for example, a kernel device tree) - as part of the FIP, to be passed through the firmware stages. - -- Support for alternative boot flows, for example to support platforms where - the EL3 Runtime Software is loaded using other firmware or a separate - secure system processor, or where a non-TF-A ROM expects BL2 to be loaded - at EL3. - -- Support for the GCC, LLVM and Arm Compiler 6 toolchains. - -- Support for combining several libraries into a "romlib" image that may be - shared across images to reduce memory footprint. The romlib image is stored - in ROM but is accessed through a jump-table that may be stored - in read-write memory, allowing for the library code to be patched. - -- A prototype implementation of a Secure Partition Manager (SPM) that is based - on the SPCI Alpha 1 and SPRT draft specifications. - -- Support for ARMv8.3 pointer authentication in the normal and secure worlds. - The use of pointer authentication in the normal world is enabled whenever - architectural support is available, without the need for additional build - flags. Use of pointer authentication in the secure world remains an - experimental configuration at this time and requires the - ``BRANCH_PROTECTION`` option to be set to non-zero. - -- Position-Independent Executable (PIE) support. Initially for BL31 only, with - further support to be added in a future release. - -For a full description of functionality and implementation details, please -see :ref:`Firmware Design` and supporting documentation. The -:ref:`Change Log & Release Notes` provides details of changes made since the -last release. +**Security Advisories** holds a list of documents relating to |CVE| entries that +have previously been raised against the software. Platforms --------- @@ -224,74 +160,17 @@ - Texas Instruments K3 SoCs - Xilinx Versal and Zynq UltraScale + MPSoC -Still to come -------------- - -- Support for additional platforms. - -- Refinements to Position Independent Executable (PIE) support. - -- Refinements to the SPCI-based SPM implementation as the draft SPCI and SPRT - specifications continue to evolve. - -- Documentation enhancements. - -- Ongoing support for new architectural features, CPUs and System IP. - -- Ongoing support for new Arm system architecture specifications. - -- Ongoing security hardening, optimization and quality improvements. - -For a full list of detailed issues in the current code, please see the -:ref:`Change Log & Release Notes` and the `issue tracker`_. - -Getting started ---------------- - -See the :ref:`User Guide` for instructions on how to download, install, build -and use TF-A with the Arm `FVP`_\ s. - -See the :ref:`Firmware Design` for information on how TF-A works. - -See the :ref:`Porting Guide` as well for information about how to use this -software on another Armv7-A or Armv8-A platform. - -See the :ref:`Contributor's Guide` for information on how to contribute to this -project and the :ref:`Contributor Acknowledgements` file for a list of -contributors to the project. - -Contact Us -~~~~~~~~~~ - -We welcome any feedback on TF-A. If you think you have found a security -vulnerability, please report this using the process defined in the TF-A -:ref:`Security Handling` document. - -For all other feedback, please use the `issue tracker`_ or our `mailing list`_. - -Arm licensees may contact Arm directly via their partner managers. - -------------- *Copyright (c) 2013-2019, Arm Limited and Contributors. All rights reserved.* .. _Armv7-A and Armv8-A: https://developer.arm.com/products/architecture/a-profile .. _Secure Monitor: http://www.arm.com/products/processors/technologies/trustzone/tee-smc.php -.. _Power State Coordination Interface (PSCI): PSCI_ -.. _PSCI: http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf +.. _Power State Coordination Interface (PSCI): http://infocenter.arm.com/help/topic/com.arm.doc.den0022d/Power_State_Coordination_Interface_PDD_v1_1_DEN0022D.pdf .. _Trusted Board Boot Requirements CLIENT (TBBR-CLIENT): https://developer.arm.com/docs/den0006/latest/trusted-board-boot-requirements-client-tbbr-client-armv8-a -.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf -.. _System Control and Management Interface (SCMI): SCMI_ -.. _SCMI: http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf -.. _Software Delegated Exception Interface (SDEI): SDEI_ -.. _SDEI: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf +.. _System Control and Management Interface (SCMI): http://infocenter.arm.com/help/topic/com.arm.doc.den0056a/DEN0056A_System_Control_and_Management_Interface.pdf +.. _Software Delegated Exception Interface (SDEI): http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf .. _Juno Arm Development Platform: http://www.arm.com/products/tools/development-boards/versatile-express/juno-arm-development-platform.php -.. _Arm FVP website: FVP_ -.. _FVP: https://developer.arm.com/products/system-design/fixed-virtual-platforms +.. _Arm FVP website: https://developer.arm.com/products/system-design/fixed-virtual-platforms .. _Linaro Release 19.06: http://releases.linaro.org/members/arm/platforms/19.06 -.. _OP-TEE Secure OS: https://github.com/OP-TEE/optee_os -.. _NVIDIA Trusted Little Kernel: http://nv-tegra.nvidia.com/gitweb/?p=3rdparty/ote_partner/tlk.git;a=summary -.. _Trusty Secure OS: https://source.android.com/security/trusty -.. _trustedfirmware.org: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git -.. _issue tracker: https://issues.trustedfirmware.org -.. _mailing list: https://lists.trustedfirmware.org/mailman/listinfo/tf-a +.. _SMC Calling Convention: http://infocenter.arm.com/help/topic/com.arm.doc.den0028b/ARM_DEN0028B_SMC_Calling_Convention.pdf diff --git a/docs/maintainers.rst b/docs/maintainers.rst deleted file mode 100644 index 86e445a..0000000 --- a/docs/maintainers.rst +++ /dev/null @@ -1,316 +0,0 @@ -Maintainers -=========== - -Trusted Firmware-A (TF-A) is an Arm maintained project. All contributions are -ultimately merged by the maintainers listed below. Technical ownership of some -parts of the codebase is delegated to the sub-maintainers listed below. An -acknowledgement from these sub-maintainers may be required before the -maintainers merge a contribution. - -Main maintainers ----------------- -:M: Dan Handley -:G: `danh-arm`_ -:M: Soby Mathew -:G: `soby-mathew`_ -:M: Sandrine Bailleux -:G: `sandrine-bailleux-arm`_ -:M: Alexei Fedorov -:G: `AlexeiFedorov`_ -:M: Paul Beesley -:G: `pbeesley-arm`_ -:M: John Tsichritzis -:G: `jts-arm`_ - -Allwinner ARMv8 platform port ------------------------------ -:M: Andre Przywara -:G: `Andre-ARM`_ -:M: Samuel Holland -:G: `smaeul`_ -:F: docs/plat/allwinner.rst -:F: plat/allwinner/ -:F: drivers/allwinner/ - -Amlogic Meson S905 (GXBB) platform port ---------------------------------------- -:M: Andre Przywara -:G: `Andre-ARM`_ -:F: docs/plat/meson-gxbb.rst -:F: drivers/amlogic/ -:F: plat/amlogic/gxbb/ - -Amlogic Meson S905x (GXL) platform port ---------------------------------------- -:M: Remi Pommarel -:G: `remi-triplefault`_ -:F: docs/plat/meson-gxl.rst -:F: drivers/amlogic/gxl -:F: plat/amlogic/gxl/ - -Amlogic Meson S905X2 (G12A) platform port ------------------------------------------ -:M: Carlo Caione -:G: `carlocaione`_ -:F: docs/plat/meson-g12a.rst -:F: drivers/amlogic/g12a -:F: plat/amlogic/g12a/ - -Armv7-A architecture port -------------------------- -:M: Etienne Carriere -:G: `etienne-lms`_ - -Arm System Guidance for Infrastructure / Mobile FVP platforms -------------------------------------------------------------- -:M: Nariman Poushin -:G: `npoushin`_ -:M: Thomas Abraham -:G: `thomas-arm`_ -:F: plat/arm/css/sgi/ -:F: plat/arm/css/sgm/ -:F: plat/arm/board/sgi575/ -:F: plat/arm/board/sgm775/ - -Console API framework ---------------------- -:M: Julius Werner -:G: `jwerner-chromium`_ -:F: drivers/console/ -:F: include/drivers/console.h -:F: plat/common/aarch64/crash_console_helpers.S - -coreboot support libraries --------------------------- -:M: Julius Werner -:G: `jwerner-chromium`_ -:F: drivers/coreboot/ -:F: include/drivers/coreboot/ -:F: include/lib/coreboot.h -:F: lib/coreboot/ - -eMMC/UFS drivers ----------------- -:M: Haojian Zhuang -:G: `hzhuang1`_ -:F: drivers/partition/ -:F: drivers/synopsys/emmc/ -:F: drivers/synopsys/ufs/ -:F: drivers/ufs/ -:F: include/drivers/dw_ufs.h -:F: include/drivers/ufs.h -:F: include/drivers/synopsys/dw_mmc.h - -HiSilicon HiKey and HiKey960 platform ports -------------------------------------------- -:M: Haojian Zhuang -:G: `hzhuang1`_ -:F: docs/plat/hikey.rst -:F: docs/plat/hikey960.rst -:F: plat/hisilicon/hikey/ -:F: plat/hisilicon/hikey960/ - -HiSilicon Poplar platform port ------------------------------- -:M: Shawn Guo -:G: `shawnguo2`_ -:F: docs/plat/poplar.rst -:F: plat/hisilicon/poplar/ - -Intel SocFPGA platform ports ----------------------------- -:M: Tien Hock Loh -:G: `thloh85-intel`_ -:M: Hadi Asyrafi -:G: mabdulha -:F: plat/intel/soc -:F: drivers/intel/soc/ - -MediaTek platform ports ------------------------ -:M: Yidi Lin (林以廸) -:G: `mtk09422`_ -:F: plat/mediatek/ - -Marvell platform ports and SoC drivers --------------------------------------- -:M: Konstantin Porotchkin -:G: `kostapr`_ -:F: docs/marvell/ -:F: plat/marvell/ -:F: drivers/marvell/ -:F: tools/marvell/ - -NVidia platform ports ---------------------- -:M: Varun Wadekar -:G: `vwadekar`_ -:F: docs/plat/nvidia-tegra.rst -:F: include/lib/cpus/aarch64/denver.h -:F: lib/cpus/aarch64/denver.S -:F: plat/nvidia/ - -NXP QorIQ Layerscape platform ports ------------------------------------ -:M: Jiafei Pan -:G: `qoriq-open-source`_ -:F: docs/plat/ls1043a.rst -:F: plat/layerscape/ - -NXP i.MX 7 WaRP7 platform port and SoC drivers ----------------------------------------------- -:M: Bryan O'Donoghue -:G: `bryanodonoghue`_ -:M: Jun Nie -:G: `niej`_ -:F: docs/plat/warp7.rst -:F: plat/imx/common/ -:F: plat/imx/imx7/ -:F: drivers/imx/timer/ -:F: drivers/imx/uart/ -:F: drivers/imx/usdhc/ - -NXP i.MX 8 platform port ------------------------- -:M: Anson Huang -:G: `Anson-Huang`_ -:F: docs/plat/imx8.rst -:F: plat/imx/ - -NXP i.MX8M platform port ------------------------- -:M: Jacky Bai -:G: `JackyBai`_ -:F: doc/plat/imx8m.rst -:F: plat/imx/imx8m/ - -OP-TEE dispatcher ------------------ -:M: Jens Wiklander -:G: `jenswi-linaro`_ -:F: docs/spd/optee-dispatcher.rst -:F: services/spd/opteed/ - -QEMU platform port ------------------- -:M: Jens Wiklander -:G: `jenswi-linaro`_ -:F: docs/plat/qemu.rst -:F: plat/qemu/ - -Raspberry Pi 3 platform port ----------------------------- -:M: Ying-Chun Liu (PaulLiu) -:G: `grandpaul`_ -:F: docs/plat/rpi3.rst -:F: plat/rpi3/ -:F: drivers/rpi3/ -:F: include/drivers/rpi3/ - -Renesas rcar-gen3 platform port -------------------------------- -:M: Jorge Ramirez-Ortiz -:G: `ldts`_ -:M: Marek Vasut -:G: `marex`_ -:F: docs/plat/rcar-gen3.rst -:F: plat/renesas/rcar -:F: drivers/renesas/rcar -:F: tools/renesas/rcar_layout_create - -RockChip platform port ----------------------- -:M: Tony Xie -:G: `TonyXie06`_ -:G: `rockchip-linux`_ -:M: Heiko Stuebner -:G: `mmind`_ -:F: plat/rockchip/ - -STM32MP1 platform port ----------------------- -:M: Yann Gautier -:G: `Yann-lms`_ -:F: docs/plat/stm32mp1.rst -:F: drivers/st/ -:F: fdts/stm32\* -:F: include/drivers/st/ -:F: include/dt-bindings/\*/stm32\* -:F: plat/st/ -:F: tools/stm32image/ - -Synquacer platform port ------------------------ -:M: Sumit Garg -:G: `b49020`_ -:F: docs/plat/synquacer.rst -:F: plat/socionext/synquacer/ - -Texas Instruments platform port -------------------------------- -:M: Andrew F. Davis -:G: `glneo`_ -:F: docs/plat/ti-k3.rst -:F: plat/ti/ - -TLK/Trusty secure payloads --------------------------- -:M: Varun Wadekar -:G: `vwadekar`_ -:F: docs/spd/tlk-dispatcher.rst -:F: docs/spd/trusty-dispatcher.rst -:F: include/bl32/payloads/tlk.h -:F: services/spd/tlkd/ -:F: services/spd/trusty/ - -UniPhier platform port ----------------------- -:M: Masahiro Yamada -:G: `masahir0y`_ -:F: docs/plat/socionext-uniphier.rst -:F: plat/socionext/uniphier/ - -Xilinx platform port --------------------- -:M: Siva Durga Prasad Paladugu -:G: `sivadur`_ -:F: docs/plat/xilinx-zynqmp.rst -:F: plat/xilinx/ - -.. _AlexeiFedorov: https://github.com/AlexeiFedorov -.. _Andre-ARM: https://github.com/Andre-ARM -.. _Anson-Huang: https://github.com/Anson-Huang -.. _bryanodonoghue: https://github.com/bryanodonoghue -.. _b49020: https://github.com/b49020 -.. _carlocaione: https://github.com/carlocaione -.. _danh-arm: https://github.com/danh-arm -.. _etienne-lms: https://github.com/etienne-lms -.. _glneo: https://github.com/glneo -.. _grandpaul: https://github.com/grandpaul -.. _hzhuang1: https://github.com/hzhuang1 -.. _JackyBai: https://github.com/JackyBai -.. _jenswi-linaro: https://github.com/jenswi-linaro -.. _jts-arm: https://github.com/jts-arm -.. _jwerner-chromium: https://github.com/jwerner-chromium -.. _kostapr: https://github.com/kostapr -.. _ldts: https://github.com/ldts -.. _marex: https://github.com/marex -.. _masahir0y: https://github.com/masahir0y -.. _mmind: https://github.com/mmind -.. _mtk09422: https://github.com/mtk09422 -.. _niej: https://github.com/niej -.. _npoushin: https://github.com/npoushin -.. _pbeesley-arm: https://github.com/pbeesley-arm -.. _qoriq-open-source: https://github.com/qoriq-open-source -.. _remi-triplefault: https://github.com/repk -.. _rockchip-linux: https://github.com/rockchip-linux -.. _sandrine-bailleux-arm: https://github.com/sandrine-bailleux-arm -.. _shawnguo2: https://github.com/shawnguo2 -.. _sivadur: https://github.com/sivadur -.. _smaeul: https://github.com/smaeul -.. _soby-mathew: https://github.com/soby-mathew -.. _thloh85-intel: https://github.com/thloh85-intel -.. _thomas-arm: https://github.com/thomas-arm -.. _TonyXie06: https://github.com/TonyXie06 -.. _vwadekar: https://github.com/vwadekar -.. _Yann-lms: https://github.com/Yann-lms diff --git a/docs/process/index.rst b/docs/process/index.rst index a870c8f..9c12de8 100644 --- a/docs/process/index.rst +++ b/docs/process/index.rst @@ -6,7 +6,6 @@ :caption: Contents :numbered: - release-information security platform-compatibility-policy coding-guidelines diff --git a/docs/process/release-information.rst b/docs/process/release-information.rst deleted file mode 100644 index e264e51..0000000 --- a/docs/process/release-information.rst +++ /dev/null @@ -1,82 +0,0 @@ -Release Processes -================= - -Project Release Cadence ------------------------ - -The project currently aims to do a release once every 6 months which will be -tagged on the master branch. There will be a code freeze (stop merging -non-essential PRs) up to 4 weeks prior to the target release date. The release -candidates will start appearing after this and only bug fixes or updates -required for the release will be merged. The maintainers are free to use their -judgement on what PRs are essential for the release. A release branch may be -created after code freeze if there are significant PRs that need merging onto -the integration branch during the merge window. - -The release testing will be performed on release candidates and depending on -issues found, additional release candidates may be created to fix the issues. - -:: - - |<----------6 months---------->| - |<---4 weeks--->| |<---4 weeks--->| - +-----------------------------------------------------------> time - | | | | - code freeze ver w.x code freeze ver y.z - - -Upcoming Releases -~~~~~~~~~~~~~~~~~ - -These are the estimated dates for the upcoming release. These may change -depending on project requirement and partner feedback. - -+-----------------+---------------------------+------------------------------+ -| Release Version | Target Date | Expected Code Freeze | -+=================+===========================+==============================+ -| v2.0 | 1st week of Oct '18 | 1st week of Sep '18 | -+-----------------+---------------------------+------------------------------+ -| v2.1 | 5th week of Mar '19 | 1st week of Mar '19 | -+-----------------+---------------------------+------------------------------+ - -Removal of Deprecated Interfaces --------------------------------- - -As mentioned in the :ref:`Platform Compatibility Policy`, this is a live -document cataloging all the deprecated interfaces in TF-A project and the -Release version after which it will be removed. - -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| Interface | Deprecation | Removed | Comments | -| | Date | after | | -| | | Release | | -+================================+=============+=========+=========================================================+ -| Legacy Console API | Jan '18 | v2.1 | Deprecated in favour of ``MULTI_CONSOLE_API`` | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| Weak default | Oct '18 | v2.1 | The default implementations are defined in | -| ``plat_crash_console_*`` | | | ``crash_console_helpers.S``. The platforms have to | -| APIs | | | define ``plat_crash_console_*``. | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| ``finish_console_register`` | Oct '18 | v2.1 | The old version of the macro is deprecated. See commit | -| macro in | | | cc5859c_ for more details. | -| ``MULTI_CONSOLE_API`` | | | | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| Types ``tzc_action_t`` and | Oct '18 | v2.1 | Using logical operations such as OR in enumerations | -| ``tzc_region_attributes_t`` | | | goes against the MISRA guidelines. | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| Macro ``EL_IMPLEMENTED()`` | Oct '18 | v2.1 | Deprecated in favour of ``el_implemented()``. | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| ``get_afflvl_shift()``, | Dec '18 | v2.1 | Removed. | -| ``mpidr_mask_lower_afflvls()``,| | | | -| and ``eret()``. | | | | -+--------------------------------+-------------+---------+---------------------------------------------------------+ -| Extra include paths in the | Jan '18 | v2.1 | Now it is needed to use the full path of the common | -| Makefile in ``INCLUDES``. | | | header files. More information in commit 09d40e0e0828_. | -+--------------------------------+-------------+---------+---------------------------------------------------------+ - --------------- - -*Copyright (c) 2018-2019, Arm Limited and Contributors. All rights reserved.* - -.. _cc5859c: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=cc5859ca19ff546c35eb0331000dae090b6eabcf -.. _09d40e0e0828: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/commit/?id=09d40e0e08283a249e7dce0e106c07c5141f9b7e