No description
Find a file
Arvind Ram Prakash ccb5616272 refactor(cpus): convert Neoverse N2 to framework
This involves replacing:
 * the reset_func with the standard cpu_reset_func_{start,end} to apply
   errata automatically
 * the <cpu>_errata_report with the errata_report_shim to report errata
   automatically
...and for each erratum:
 * the prologue with the workaround_<type>_start to do the checks and
   framework registration automatically
 * the epilogue with the workaround_<type>_end
 * the checker function with the check_erratum_<type> to make it more
   descriptive

It is important to note that the errata workaround sequences remain
unchanged and preserve their git blame.

Testing was conducted by:

 * Manual comparison of disassembly of converted functions with non-
   converted functions

   aarch64-none-elf-objdump -D <trusted-firmware-a with conversion>/build/fvp/release/bl31/bl31.elf
     vs
   aarch64-none-elf-objdump -D <trusted-firmware-a clean repo>/build/fvp/release/bl31/bl31.elf

 * Build for release with all errata flags enabled and run default tftf
   tests

   CROSS_COMPILE=aarch64-none-elf- make PLAT=fvp  CTX_INCLUDE_AARCH32_REGS=0 \
   HW_ASSISTED_COHERENCY=1 USE_COHERENT_MEM=0 \
   BL33=./../tf-a-tests/build/fvp/debug/tftf.bin \
   ERRATA_N2_2002655=1 ERRATA_N2_2025414=1 ERRATA_N2_2067956=1 ERRATA_N2_2189731=1 \
   ERRATA_N2_2138956=1 ERRATA_N2_2138953=1 ERRATA_N2_2242415=1 ERRATA_N2_2138958=1 \
   ERRATA_N2_2242400=1 ERRATA_N2_2280757=1 ERRATA_N2_2326639=1 ERRATA_N2_2376738=1 \
   ERRATA_N2_2388450=1 ERRATA_N2_2743014=1 ERRATA_N2_2743089=1 ERRATA_DSU_2313941=1 \
   WORKAROUND_CVE_2022_23960=1 ERRATA_ABI_SUPPORT=1 all fip

 * Build for debug with all errata enabled and step through ArmDS
   at reset to ensure all functions are entered.

Signed-off-by: Arvind Ram Prakash <arvind.ramprakash@arm.com>
Change-Id: I3dd06b5d827de5836eadd58ae28f28e62039f257
2023-08-03 22:41:57 +02:00
.husky build(hooks): allow hooks to skip Commitizen 2023-04-18 17:38:20 +01:00
bl1 refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init 2023-06-29 09:59:06 +01:00
bl2 refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init 2023-06-29 09:59:06 +01:00
bl2u chore(bl): add UNALIGNED symbols for TEXT/RODATA 2023-06-12 12:50:08 +02:00
bl31 refactor(el3-runtime): move interrupt exception handler from macro to a function 2023-07-21 09:59:33 +01:00
bl32 refactor(pmu): convert FEAT_MTPMU to C and move to persistent register init 2023-06-29 09:59:06 +01:00
common feat(mte): adds feature detection for MTE_PERM 2023-07-20 09:00:22 +01:00
docs feat(nuvoton): added support for npcm845x chip 2023-07-26 08:14:45 +03:00
drivers chore(ethos-n): update npu firmware version 2023-07-14 15:24:18 +01:00
fdts feat(morello): add support for I2S audio 2023-07-27 15:20:14 +05:30
include feat(arm): enable FHI PPI interrupt to report CPU errors 2023-08-01 21:09:18 +05:30
lib refactor(cpus): convert Neoverse N2 to framework 2023-08-03 22:41:57 +02:00
licenses docs(license): rectify arm-gic.h license 2021-04-26 12:36:00 +01:00
make_helpers feat(mte): adds feature detection for MTE_PERM 2023-07-20 09:00:22 +01:00
plat Merge "fix(imx8m): make IMX_BOOT_UART_BASE autodetection option more obvious" into integration 2023-08-03 18:02:58 +02:00
services Merge "fix(el3-spmc): fix incorrect CASSERT" into integration 2023-07-25 15:32:54 +02:00
tools build(tools): avoid unnecessary link 2023-07-05 13:00:18 +02:00
.checkpatch.conf Re-apply GIT_COMMIT_ID check for checkpatch 2019-07-12 11:06:24 +01:00
.commitlintrc.js build(commitlint): make the scope optional 2022-05-03 11:06:50 +02:00
.cz.json refactor(hooks): replace cz-conventional-changelog with cz-commitlint 2022-01-24 12:55:00 +00:00
.editorconfig .editorconfig: set max line length to 100 2020-12-03 15:39:23 +00:00
.gitignore chore: add dependency files generated by tools to .gitignore 2023-04-05 09:47:15 +01:00
.gitreview Specify integration as the default branch for git-review 2020-04-02 07:57:17 +00:00
.nvmrc build(npm): add NVM version file 2022-10-10 13:24:22 +01:00
.readthedocs.yaml Revert "docs: disable PDF output for documentation generation" 2023-07-27 11:30:56 +02:00
.versionrc.js fix(docs): fix build errors for latexpdf 2023-06-12 10:56:30 +01:00
changelog.yaml feat(nuvoton): added support for npcm845x chip 2023-07-26 08:14:45 +03:00
dco.txt
license.rst doc: De-duplicate readme and license files 2019-10-08 16:36:15 +00:00
Makefile feat(mte): adds feature detection for MTE_PERM 2023-07-20 09:00:22 +01:00
package-lock.json docs(changelog): changelog for v2.9 release 2023-05-19 13:49:08 -05:00
package.json docs(changelog): changelog for v2.9 release 2023-05-19 13:49:08 -05:00
poetry.lock fix(docs): fix build errors for latexpdf 2023-06-12 10:56:30 +01:00
pyproject.toml fix(docs): fix build errors for latexpdf 2023-06-12 10:56:30 +01:00
readme.rst doc: Formatting fixes for readme.rst 2019-10-09 15:37:59 +00:00

Trusted Firmware-A
==================

Trusted Firmware-A (TF-A) is a reference implementation of secure world software
for `Arm A-Profile architectures`_ (Armv8-A and Armv7-A), including an Exception
Level 3 (EL3) `Secure Monitor`_. It provides a suitable starting point for
productization of secure world boot and runtime firmware, in either the AArch32
or AArch64 execution states.

TF-A implements Arm interface standards, including:

-  `Power State Coordination Interface (PSCI)`_
-  `Trusted Board Boot Requirements CLIENT (TBBR-CLIENT)`_
-  `SMC Calling Convention`_
-  `System Control and Management Interface (SCMI)`_
-  `Software Delegated Exception Interface (SDEI)`_

The code is designed to be portable and reusable across hardware platforms and
software models that are based on the Armv8-A and Armv7-A architectures.

In collaboration with interested parties, we will continue to enhance TF-A
with reference implementations of Arm standards to benefit developers working
with Armv7-A and Armv8-A TrustZone technology.

Users are encouraged to do their own security validation, including penetration
testing, on any secure world code derived from TF-A.

More Info and Documentation
---------------------------

To find out more about Trusted Firmware-A, please `view the full documentation`_
that is available through `trustedfirmware.org`_.

--------------

*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
.. _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
.. _Arm A-Profile architectures: https://developer.arm.com/architectures/cpu-architecture/a-profile
.. _view the full documentation: https://www.trustedfirmware.org/docs/tf-a
.. _trustedfirmware.org: http://www.trustedfirmware.org