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