blob: 9aeaeb6a3aabbebd9c4f229a6f1fdfb0e437cf31 [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
4############################
5Change-log and Release notes
6############################
7
8******
Soby Mathew273ecb72023-11-20 12:28:33 +00009v0.4.0
10******
11
12The following sections have the details on the release. This release has been
13verified with `TF-A v2.10`_ release.
14
15============================
16New features in this release
17============================
18
19- Added initial partial support for analysing RMM source code with
20 CBMC (https://www.cprover.org/cbmc/).
21
22 * A new HOST_VARIANT, `host_cbmc`, has been introduced for this purpose.
23 * The CBMC testbench files and autogenerated files from RMM machine
24 readable specification are imported into the source tree.
25 * An application note for the same is added to the documentation.
26
27- Aligned the implementation to `RMM v1.0 EAC5 specification`_.
28
29 * The relevant tag for the alignment is `rmm-spec-v1.0-eac5`_.
30 * There is also an intermediate RMM v1.0 EAC2 alignment which
31 is tagged `rmm-spec-v1.0-eac2`_.
32
33- Supported save and restore of Non Secure SME context when Realms are
34 scheduled.
35
36 * The SIMD abstraction in RMM was reworked to cater for this requirement.
37 * Added support to emulate SME specific feature ID registers.
38 * Support injecting UNDEF exception into realm when SME is accessed
39 within it.
40 * Also RMM now can handle SVE hint bit as specified by SMCCC v1.3
41 specification.
42
43- Added `TF-RMM Threat Model`_ to the documentation.
44
45- Added capability to privately map the per-CPU stack.
46
47 * This contains any stack overflows to the particular CPU and prevents
48 a CPU from corrupting another CPU stack.
49
50- Added FEAT_PAUTH and FEAT_BTI support to RMM and also capability to
51 use FEAT_PAUTH within realms.
52
53- Migrate to PSA Crypto API for attestation and measurement functionality
54 in RMM.
55
56- Added FEAT_LPA2 support to Stage 1 MMU code (lib/xlat) in RMM.
57
58- Added Stage 1 MMU setup design document.
59
60==================================
61Build/Testing/Tooling improvements
62==================================
63
64- Added static commit message checker which enforces the commit message
65 guidelines mandated for the project.
66
67- Added clang-tidy checker as one of the static analyzers.
68
69 * Several fixes to errors flagged by the static checker have been fixed.
70
71- Fixed issues found in xlat lib unittests.
72
73- Added github workflow for git submodules so that the TF-RMM dependencies
74 display correctly in github.
75
76- Added github workflow to configure an automatic message for PRs on GitHub
77 and also build and run RMM unittests for every update of the `main` branch.
78
79- Added FEAT_LPA2 unit tests for lib/xlat module.
80
81- Added RSI logger unit tests.
82
83=========
84Platforms
85=========
86
87- The support for QEMU virt platform was merged.
88
89======================================
90Bug fixes/improvements in this release
91======================================
92
93- Fixed issue with TLB invalidations for unprotected mappings during
94 RMI_RTT_DESTROY command.
95
96- Fixed an issue wherein attest token write may return without releasing
97 lock on the last level RTT of the mapped buffer.
98
99- Enable TSW bit in hcr_el2 when executing in Realm world so as to trap
100 any data cache maintenance instructions that operate by Set/Way.
101
102- Fixed issues flagged by coverity online scan. The defects detected
103 can be found in the `TF-RMM coverity scan online`_ homepage.
104
105- Fixed issues in s2tt management related to NS memory assignment/unassignment.
106
107- Added missing check to gicv3_hcr field.
108
109- Cache line align xlat lib data structures accessed by secondary CPUs to avoid
110 data corruption due to mismatched memory attribute accesses by RMM during
111 warm boot.
112
113- Corrected linker options when building qcbor library.
114
115- Fixes to comply with MISRA coding guidelines.
116
117- Adjusted mbedTLS heap size depending on MAX_CPUS in RMM.
118
119- Fixed issue with RMI_DATA_CREATE_UNKNOWN setting RIPAS to RAM.
120
121- Added 'ipa_bound' failure condition in RMI_DATA_DESTROY handler. Also added
122 'level_bound' failure condition for RMI_RTT_MAP_UNPROTECTED and
123 RMI_RTT_UNMAP_UNPROTECTED command handlers.
124
125- Fixed issue with rsi_log_on_exit() and modified the logging format.
126
127- Fixed issue with change `ipa_align` failure condition.
128
129- Unified design of RSI/PSCI handlers.
130
131- The issue with RMM config ``RMM_FPU_USE_AT_REL2`` is fixed and the SIMD
132 registers are saved and restored depending on the live register context in
133 use which be one of FPU, SVE or SME.
134
135- The compatibility check for RMM-EL3 interface version is hardened.
136
137- Issue related to attestation token interruption flow is fixed.
138
139- Enhanced the `fake_host` sample application to do Realm token creation.
140
141- Fixed D-cache maintenance in fvp_set_dram_layout().
142
143- Updated t_cose submodule to use upstream version rather than a forked
144 version.
145
146============================
147Known issues and limitations
148============================
149
150- Some capabilities as mentioned in `RMM v1.0 EAC5 specification`_ are
151 restricted or absent in TF-RMM as listed below:
152
153 * The RMI_RTT_FOLD command only allows folding upto Level 2 even though
154 the specification allows upto Level 1.
155 * The support for Self-hosted debug in Realms is not implemented.
156 * Although the RMM allows CCA attestation token sizes of larger than 4KB,
157 there is a limitation on the size of the Platform attestation token part.
158 On the RMM-EL3 interface, there is only a shared buffer of 4KB that is
159 currently shared on the FVP. This needs to be enhanced so that larger
160 platform token sizes can be tested.
161
162- The `rmm-el3-ifc` component does not always reset the RMM to the correct
163 state on encountering an error. This needs to be corrected.
164
165- The invocation of mmio_emulation() and sea_inj() functions need to be
166 mutually exclusive during schedule of a REC. Currently both the cases
167 are allowed to be satisfied at the same time which is incorrect.
168
169=================
170Upcoming features
171=================
172
173- FEAT_LPA2 support for Stage 2 MMU code (s2tt) in RMM.
174
175- Add unit-tests for Stage 2 MMU code (s2tt) and also any associated rework
176 for the s2tt component.
177
178- Enhance CBMC analysis to more RMI commands.
179
180- Fuzz testing for RMM utilizing the `fake_host` architecture.
181
182- Support for new capabilities like Device assignment as mandated by future
183 versions of RMM specification.
184
185- Integrate more static analyzers into RMM build system.
186
187- Implement support for Self-hosted debug in realms.
188
189
190.. _TF-A v2.10: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.10.0
191.. _RMM v1.0 EAC5 specification: https://developer.arm.com/documentation/den0137/1-0eac5/?lang=en
192.. _rmm-spec-v1.0-eac5: https://git.trustedfirmware.org/TF-RMM/tf-rmm.git/tag/?h=rmm-spec-v1.0-eac5
193.. _rmm-spec-v1.0-eac2: https://git.trustedfirmware.org/TF-RMM/tf-rmm.git/tag/?h=rmm-spec-v1.0-eac2
194.. _TF-RMM coverity scan online: https://scan.coverity.com/projects/tf-rmm-tf-rmm
195.. _TF-RMM Threat Model: https://tf-rmm.readthedocs.io/en/latest/security/threat_model/index.html
196
197******
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100198v0.3.0
199******
200
201The following sections have the details on the release. This release has been
202verified with `TF-A v2.9`_ release.
203
204============================
205New features in this release
206============================
207
208- Add support to create Realms which can make use of SVE, if present in
209 hardware.
210
211- Refactor the Stage 1 translation table library `lib/xlat` API to better
212 fit RMM usage. Also harden dynamic mapping via slot buffer mechanism by
213 use of ``TRANSIENT`` software defined attribute.
214
215- Add PMU support for Realms as described by RMM v1.0 Beta0 specification.
216
217- Support getting DRAM info from the Boot manifest dynamically at runtime.
218
219 * RMM can now support the 2nd DDR bank on FVP.
220
221==========================
222Build/Testing improvements
223==========================
224
225- Define a unit test framework using CppUTest for RMM.
226
227- Add unittests for `granule`, `slot-buffer` and Stage 1 translation table lib
228 `xlat`.
229
230- Improve the ``fake-host`` mock capability by adding support for per PE sysreg
231 emulation.
232
233- Improve the VA to PA mock layer for ``fake-host``.
234
235- Enable generation of gprof profiling data as part of ``fake-host`` runs.
236
237- Improve the sample application on ``host-build`` platform by adding the cold
238 attestation initialization flow. Also a sample minimal Realm create, run and
239 destroy sequence is added to showcase the RMI calls involved.
240
AlexeiFedorov47165422023-09-13 11:47:57 +0100241- Further improvements to the unit test framework :
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100242
243 * Restore the sysreg state between test runs so each test gets a known
244 sysreg state.
245 * Add capability to test assertions.
246 * Support dynamic behaviour for test harness depending on requirement.
247 * Add support for coverage report generation as part of unit test run.
248
249- Build improvements in RMM:
250
251 * Move mbedTLS build from configure stage to build stage.
252 * Simplify QCBOR build.
253 * Fix build artefact directory path to better cater to multi-config builds.
254
255=========================
256Bug fixes in this release
257=========================
258
259- Remove HVC exit handling from RMI_REC_ENTER handler.
260
261- Fix parameter in measurement_extend_sha512().
262
263- Fix issues in `lib/xlat` for some corner cases.
264
265- Mask MTE capability from `id_aa64pfr1_el1` so that Realms
266 can see that MTE is not supported.
267
268- Add isb() after writes to `cptr_el2` system register.
269
270- Fix the granule alignment check on granule_addr.
271
272- Fix some cppcheck warnings.
273
274- Properly handle errors for granule (un)delegate calls.
275
276- Fix the incorrect bit map manipulation for tracking VMID for realms.
277
278- Fix some incorrect Block mapping cases in Stage 2 translation.
279
280=================
281Upcoming features
282=================
283
284- RMM EAC Specification alignment.
285
286- Support Self-Hosted Debug Realms.
287
288- Support FEAT_PAuth for Realms and utilize the same for RMM.
289
290- Support LPA2 for Stage 2 Realm translation tables.
291
292- Threat model covering RMM data flows.
293
294- Enable Bounded Model Checker (CBMC) for source analysis.
295
296- Save and restore SME/SME2 context belonging to NS Host. This allows NS Host
297 to make use of SME/SME2 when Realms are scheduled.
298
299============================
300Known issues and limitations
301============================
302
303- The size of ``RsiHostCall`` structure is 256 bytes in the implementation
304 and aligns to `RMM Beta1 specification`_ rather than the 4 KB size
305 specified in `RMM Beta0 specification`_.
306
307- The `RMM Beta0 specification`_ does not require to have a CBOR bytestream
308 wrapper around the cca-platform-token and cca-realm-delegated-token, but
309 the RMM implementation does so and this is aligned with later versions
310 of the RMM specification (Beta2 onwards).
311
312- The RMM config ``RMM_FPU_USE_AT_REL2`` does not work as intended and
313 this config is disabled by default. This will be fixed in a future release.
314
Soby Mathewedf5f802023-05-23 09:45:10 +0100315- When the ``RSI_ATTEST_TOKEN_CONTINUE`` call is interrupted and then resumed
316 later by Host via ``RMI_REC_ENTER``, the original SMC is replayed again
317 with the original arguments rather than returning ``RSI_INCOMPLETE`` error
318 code to Realm. The result is that the interrupted RSI call is continued
319 again till completion and then returns back to Realm with the appropriate
320 error code.
321
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100322.. _TF-A v2.9: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.9.0
323
324
325******
Soby Mathew8fc82c52022-11-21 12:35:41 +0000326v0.2.0
327******
328
329- This release has been verified with `TF-A v2.8`_ release.
330
331- The release has the following fixes and enhancements:
332
333 * Add support to render documentation on read-the-docs.
334 * Fix the known issue with RSI_IPA_STATE_GET returning
335 ``RSI_ERROR_INPUT`` for a `destroyed` IPA instead of
336 emulating data abort to NS Host.
337 * Fix an issue with RSI_HOST_CALL not returning back to Host
338 to emulate a stage2 data abort.
339 * Harden an assertion check for ``do_host_call()``.
340
341- The other known issues and limitations remain the same as
342 listed for v0.1.0_.
343
344.. _TF-A v2.8: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.8.0
345
346******
Soby Mathewb4c6df42022-11-09 11:13:29 +0000347v0.1.0
348******
349
350- First TF-RMM source release aligned to `RMM Beta0 specification`_.
351 The specified interfaces : Realm Management Interface (RMI) and
352 Realm Service Interface (RSI) are implemented which can attest
353 and run Realm VMs as described by the `Arm CCA`_ Architecture.
354
355=================
356Upcoming features
357=================
358
359- Support SVE, Self-Hosted Debug and PMU in Realms
360- Support LPA2 for Stage 2 Realm translation tables.
361- Threat model covering RMM data flows.
362- Enable Bounded Model Checker (CBMC) for source analysis.
363- Unit test framework based on :ref:`RMM Fake host architecture`.
364
365============================
366Known issues and limitations
367============================
368
369The following is a list of issues which are expected to be fixed in the future
370releases of TF-RMM :
371
372- The size of ``RsiHostCall`` structure is 256 bytes in the implementation
373 and aligns to `RMM Beta1 specification`_ rather than the 4 KB size
374 specified in `RMM Beta0 specification`_.
375
376- The RSI_IPA_STATE_GET command returns error ``RSI_ERROR_INPUT`` for a
377 `destroyed` IPA instead of emulating data abort to Host.
378
379- The `RMM Beta0 specification`_ does not require to have a CBOR bytestream
380 wrapper around the cca-platform-token and cca-realm-delegated-token, but
381 the RMM implementation does so.
382
383---------------------------
384
385.. _RMM Beta0 specification: https://developer.arm.com/documentation/den0137/1-0bet0/?lang=en
386.. _RMM Beta1 specification: https://developer.arm.com/documentation/den0137/1-0bet1/?lang=en
387.. _Arm CCA: https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture