blob: c455de68e88c7435d6be9ba9076a4c42ef2265a4 [file] [log] [blame]
Soby Mathewb4c6df42022-11-09 11:13:29 +00001.. SPDX-License-Identifier: BSD-3-Clause
2.. SPDX-FileCopyrightText: Copyright TF-RMM Contributors.
3
Javier Almansa Sobrino7af29bc2023-01-06 12:32:21 +00004.. image:: https://scan.coverity.com/projects/28411/badge.svg
5 :target: https://scan.coverity.com/projects/tf-rmm-tf-rmm
6
Soby Mathewfe2ac1f2023-01-25 14:04:32 +00007#################
8Readme for TF-RMM
9#################
Soby Mathewb4c6df42022-11-09 11:13:29 +000010
Soby Mathewfe2ac1f2023-01-25 14:04:32 +000011`TF-RMM`_ (or simply RMM) is the `Trusted Firmware`_ Implementation of the
12`Realm Management Monitor (RMM) Specification`_. The RMM
Soby Mathewb4c6df42022-11-09 11:13:29 +000013is a software component that runs at Realm EL2 and forms part of a system
14which implements the Arm Confidential Compute Architecture (Arm CCA).
15`Arm CCA`_ is an architecture which provides Protected Execution Environments
16called Realms.
17
18Prior to Arm CCA, virtual machines have to trust hypervisors that manage them
19and a resource that is managed by the hypervisor is also accessible by it.
20Exploits against the hypervisors can leak confidential data held in the virtual
21machines. `Arm CCA`_ introduces a new confidential compute environment called
22a `Realm`. Any code or data belonging to a `Realm`, whether in memory or in
23registers, cannot be accessed or modified by the hypervisor. This means that
24the Realm owner does not need to trust the hypervisor that manages the
25resources used by the Realm.
26
27The Realm VM is initiated and controlled by the Normal world Hypervisor.
28To allow the isolated execution of the Realm VM, a new component called the
29Realm Management Monitor (RMM) is introduced, executing at R_EL2. The
30hypervisor interacts with the RMM via Realm Management Interface (RMI) to
31manage the Realm VM. Policy decisions, such as which Realm to run or what
32memory to be delegated to the Realm are made by the hypervisor and communicated
33via the RMI. The RMM also provides services to the Realm via the Realm Service
34Interface (RSI). These services include cryptographic services and
35attestation. The Realm initial state can be measured and an attestation
36report, which also includes platform attestation, can be requested via RSI.
37The RSI is also the channel for memory management requests from the
38Realm VM to the RMM.
39
40The following diagram shows the complete Arm CCA software stack running a
41confidential Realm VM :
42
43|Realm VM|
44
45Figure 1. Realm VM execution
46
Soby Mathewfe2ac1f2023-01-25 14:04:32 +000047The `TF-RMM`_ interacts with the Root EL3 Firmware via the
Soby Mathewb4c6df42022-11-09 11:13:29 +000048`RMM-EL3 Communication Interface`_ and this is implemented by the reference
49EL3 Firmware implementation `TF-A`_.
50
51More details about the RMM and how it fits in the Software Stack can be
52found in `Arm CCA Software Stack Guide`_.
53
Javier Almansa Sobrinoaefe6492022-11-22 10:16:24 +000054The `Change-log and Release notes`_ has the details of features implemented
Soby Mathewfe2ac1f2023-01-25 14:04:32 +000055by this version of `TF-RMM`_ and lists any known issues.
Soby Mathewb4c6df42022-11-09 11:13:29 +000056
57*******
58License
59*******
60
Soby Mathewfe2ac1f2023-01-25 14:04:32 +000061Unless specifically indicated otherwise in a file, `TF-RMM`_ files are provided
Javier Almansa Sobrinoaefe6492022-11-22 10:16:24 +000062under the `BSD-3-Clause License`_. For contributions, please
63see `License and Copyright for Contributions`_.
Soby Mathewb4c6df42022-11-09 11:13:29 +000064
65Third Party Projects
66====================
67
Soby Mathewfe2ac1f2023-01-25 14:04:32 +000068The `TF-RMM`_ project requires to be linked with certain other 3rd party
69projects and they are to be cloned from their repositories into ``ext`` folder
70before building. The projects are `MbedTLS`_, `t_cose`_, `QCBOR`_ and
71`CppUTest`_.
Soby Mathewb4c6df42022-11-09 11:13:29 +000072
73The project also contains files which are imported from other projects
74into the source tree and may have a different license. Such files with
75different licenses are listed in the table below. This table is used by the
76``checkspdx`` tool in the project to verify license headers.
77
78.. list-table:: **List of files with different license**
79
80 * - File
81 - License
82 * - lib/libc/src/printf.c
83 - MIT
84 * - lib/libc/include/stdio.h
85 - MIT
86 * - lib/libc/src/strlcpy.c
87 - ISC
88 * - lib/libc/src/strnlen.c
89 - BSD-2-Clause
90 * - lib/allocator/src/memory_alloc.c
91 - Apache-2.0
92
93
94************
95Contributing
96************
97
98We gratefully accept bug reports and contributions from the community.
Javier Almansa Sobrinoaefe6492022-11-22 10:16:24 +000099Please see the `Contributor's Guide`_ for details on how to do this.
Soby Mathewb4c6df42022-11-09 11:13:29 +0000100
101********************
102Feedback and support
103********************
104
105Feedback is requested via email to:
106`tf-rmm@lists.trustedfirmware.org <tf-rmm@lists.trustedfirmware.org>`__.
107
108To report a bug, please file an `issue on Github`_
109
110-----------------
111
112.. |Realm VM| image:: ./about/diagrams/cca_software_arch.png
Javier Almansa Sobrino7af29bc2023-01-06 12:32:21 +0000113.. _Realm Management Monitor (RMM) Specification: https://developer.arm.com/documentation/den0137/1-0eac5/?lang=en
Soby Mathewb4c6df42022-11-09 11:13:29 +0000114.. _Arm CCA: https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture
115.. _Arm CCA Software Stack Guide: https://developer.arm.com/documentation/den0127/0100/Overview
116.. _TF-A: https://www.trustedfirmware.org/projects/tf-a/
117.. _RMM-EL3 Communication Interface: https://trustedfirmware-a.readthedocs.io/en/latest/components/rmm-el3-comms-spec.html
118.. _issue on Github: https://github.com/TF-RMM/tf-rmm/issues
119.. _MbedTLS: https://github.com/ARMmbed/mbedtls.git
120.. _t_cose: https://github.com/laurencelundblade/t_cose
121.. _QCBOR: https://github.com/laurencelundblade/QCBOR.git
Javier Almansa Sobrinoaefe6492022-11-22 10:16:24 +0000122.. _Change-log and Release notes: https://tf-rmm.readthedocs.io/en/latest/about/change-log.html
123.. _BSD-3-Clause License: https://tf-rmm.readthedocs.io/en/latest/about/license.html
124.. _License and Copyright for Contributions: https://tf-rmm.readthedocs.io/en/latest/process/contributing.html#license-and-copyright-for-contributions
125.. _Contributor's Guide: https://tf-rmm.readthedocs.io/en/latest/process/contributing.html
Javier Almansa Sobrinoc4ad5b02022-07-05 19:05:14 +0100126.. _CppUTest: https://github.com/cpputest/cpputest.git
Soby Mathewfe2ac1f2023-01-25 14:04:32 +0000127.. _Trusted Firmware: https://www.trustedfirmware.org/
128.. _TF-RMM: https://www.trustedfirmware.org/projects/tf-rmm/