blob: 6b6d69e3c267ece6291acc8bf17449d85406ff79 [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 Mathew280d7142025-05-07 16:10:01 +01009v0.7.0
10******
11
12The following sections have the details on the release. This release has been
13verified with `TF-A v2.13`_ release.
14
15============================
16New features in this release
17============================
18
19- Deprivileging RMM code via EL0 App support
20
21 * Introduced a framework for building, packaging, and executing EL0 apps.
22 * Restructured the RMM code base to build certain components as separate
23 EL0 applications.
24 * Moved the Attestation and pseudo-random number generator functionality
25 to EL0 Apps.
26 * Added `fake-host` support to run EL0 applications.
27 * Added a supporting design document.
28
29- Added some RMMv1.1 APIs
30
31 * Implemented ``RMI_DEV_MEM_(UN)MAP`` commands.
32 * Added support for device granules in ``RMI_GRANULE_DELEGATE`` and
33 ``RMI_GRANULE_UNDELEGATE`` commands.
34
35======================================
36Bug fixes/improvements in this release
37======================================
38
39- EL0 App framework fixes and improvements
40
41 * Collected app artifacts in a single location.
42 * Fixed the path to the EL0 apps linker script.
43 * Refactored the host-common layer to separate El2-EL0 shared and
44 EL2-specific code.
45 * Enforced 64KB alignment for the RMM Core to meet ELF loader requirements.
46 * Forced lld to apply link time reloc values - this is to resolve issue
47 with App execution when linked using LLD.
48
49- Enable Generic PL011 UART config - This reduces the PL011 driver
50 to operate on the SBSA Generic UART register subset.
51
52- Enabled ``-fstack-protector-strong`` compiler flag for stack protection.
53
54- Added support to read device memory info from the Boot manifest at EL3 and
55 handle DEV granules in RMM.
56
57- Fixed various ``clang-tidy-18`` errors.
58
59- Hid MPAM from Realms and trap access to MPAM registers from Realm. Since RMM
60 does not support configuring MPAM for Realms, disabled FEAT_MPAM for Realms.
61
62- Disabled BRBE at R-EL2 and R-EL1.
63
64- Modified ``handle_sysreg_access_trap`` to skip advancing PC to allow injecting
65 UNDEF abort back into Realms.
66
67- Added -Wstrict-aliasing compiler flag.
68
69- Fixed PMU save/restore register sequence in RMM.
70
71 * RMM now saves/restores all NS event counters, even if realm is not
72 using all counters.
73 * Removed pmxevcntr_el0 and pmxevtyper_el0 registers from
74 saving/restoring as they are aliases for pmevcntrN_el0 and pmevtyperN_el0,
75 selected by pmselr_el0.sel.
76 * Removed saving pmcntenclr_el0, pmintenclr_el1 and pmovsclr_el0. These
77 registers are restored with inverted values of pmcntenset_el0,
78 pmintenset_el1 and pmovsset_el0.
79
80- Improved performance by clearing granule memory after MMU is enabled.
81
82- Updated default cases for handling SEAs and SEIs so that they call
83 system_abort() instead of asserting.
84
85- Corrected the DFSC macro value for asynchronous SError exceptions
86 from ``0x1`` to ``0x11``.
87
88- Fixed missing ``break`` in ``fake_host`` when processing monitor call ID.
89
90- Added ``-fno-delete-null-pointer-checks`` to disable optimization that can
91 remove such checks.
92
93- Added -Wextra compile flag for more warnings.
94
95- Introduced additional compiler options: `-Wstrict-overflow` and
96 ``-D_FORTIFY_SOURCE=2``. Note: `FORTIFY_SOURCE` is added for
97 future-proofing; RMM does not currently link against ``glibc``.
98
99- Added the `-Wnull-dereference` compile option to Debug build of RMM.
100 It is added only to Debug build as it shows false positives for Release
101 build.
102
103- Removed the redundant granule_unlock() in smc_rec_create error path
104 when Aux granule is not found.
105
106- Fixed Coverity MISRA compliance issues.
107
108- Correctly configured PSTATE flags (``TCO``, ``DIT``, ``UAO``, ``PAN``,
109 ``SSBS``, ``BTYPE``) during abort injection to R-EL1.
110
111- Added missing `top_gran_align` check to `RMI_RTT_SET_RIPAS` ABI.
112
113- Added support in RMI_VERSION and RSI_VERSION commands to report lower and
114 higher supported interface revisions.
115
116- Fixed a missing call to release the shared buffer between EL3 and RMM in
117 one of the error code paths of the EL3_TOKEN_SIGN attestation flow.
118
119==================================
120Build/Testing/Tooling improvements
121==================================
122
123- Updated minimum CMake version requirement to 3.20. This is needed
124 to support the build for EL0 app framework.
125
126- Upgraded jinja2 from 3.1.5 to 3.1.6 for document generation
127
128- Explicitly set C++ standard for Unit tests (which are written in C++).
129
130- Removed variable size arrays in some unittests.
131
132- Added support for updating git submodules during configuration of RMM.
133 This ensures updated dependencies are automatically integrated during
134 builds, particularly after project rebases. This also ties in with the
135 patching mechanism in RMM wherein a particular SHA is assumed for the
136 submodules.
137
138- Updated Shrinkwrap overlay to add PCIE DOE and IDE parameters for
139 the FVP to facilitate CCA DA development.
140
141- Switched to importing `libspdm` via git submodules instead of a custom
142 CMake mechanism.
143
144- Moved git utils cmake helpers to ``cmake/`` folder.
145
146=========
147Platforms
148=========
149
150- Added initial platform support for RD-V3-R1. RD-V3-R1 and
151 RD-V3-R1-Cfg1 Fixed Virtual Platforms are Arm Neoverse Reference Design
152 platforms with ARMv9 RME enabled CPUs.
153
154============================
155Known issues and limitations
156============================
157
158- Some capabilities mentioned in `RMM v1.0 REL0 specification`_ are
159 restricted or absent in TF-RMM as listed below:
160
161 * The support for Self-hosted debug in Realms is not implemented (`issue#23`_).
162
163=================
164Upcoming features
165=================
166
167- Prototype new features as described in `RMM v1.1 Alpha 13 specification`_.
168
169 * Realm Device Assignment - A feature which allows devices to be assigned to Realms,
170 attested and granted permission to access Realm owned memory.
171 * Planes - A feature which allows a Realm to be divided into multiple
172 mutually isolated execution environments, called Planes.
173 * Support FEAT_MEC in the Realm world.
174
175- Continue to enhance CBMC analysis to support more RMI commands.
176
177- Fuzz testing for RMM utilizing the `fake_host` architecture.
178
179- Implement support for Self-hosted debug in Realms.
180
181- Support Live Firmware Activation of RMM.
182
183
184.. _TF-A v2.13: https://git.trustedfirmware.org/TF-A/trusted-firmware-a/+/refs/tags/v2.13.0
185.. _RMM v1.1 Alpha 13 specification: https://developer.arm.com/-/cdn-downloads/permalink/Architectures/Armv9/DEN0137_1.1-alp13.zip
186
187******
Soby Mathewbabddc92024-11-18 15:17:31 +0000188v0.6.0
189******
190
191The following sections have the details on the release. This release has been
192verified with `TF-A v2.12`_ release.
193
194============================
195New features in this release
196============================
197
198- Changes to align to `RMM v1.0 REL0 specification`_.
199
200- Support for alternative attestation token signing via EL3 which includes:
201
202 * A new config flag, ``ATTEST_EL3_TOKEN_SIGN``, is introduced.
203 * New RMM-EL3 interface APIs to query EL3_FEATURES, push and pull
204 EL3 Attest token sign requests and retrieve Realm attestation
205 public key from EL3.
206 * Add support in fake_host architecture for validating the attestation
207 flow.
208 * Patch to enable EL3 based signing flow in t_cose.
209
210======================================
211Bug fixes/improvements in this release
212======================================
213
214- Reduce memory footprint of RMM : redefine granule structure to reduce granule
215 struct from 4 bytes to 2 bytes.
216
217- Add support for FEAT_DoubleFault2 for Realms.
218
219- Improve RMM performance : remove broadcast invalidates when mapping and
220 unmapping slot buffers.
221
222- RMM hardening : invalidate caches during boot.
223
224- Add libspdm version 3.4.0 as an external dependency to TF-RMM.
225
226- Enable FEAT_DIT on a fine-grained basis in RMM.
227
228- Upgrade Mbed TLS to v3.6.0.
229
230- Add binary search algorithm to improve DRAM bank lookup. As a result,
231 the platform API implementation can be made common for all platforms.
232
233- Add capability to `xlat` library to map UNPRIV memory in preparation
234 for EL0 app support.
235
236- Refactor attestation component to allow RMM to continue functioning even
237 if attestation initialization fails.
238
239- Enhance lib/attestation component to handle platform token request in
240 hunks. This allows to transfer tokens larger than 4KB from EL3
241 (`issue#24`_).
242
243- Rename previous build option RMM_CCA_DA to RMM_V1_1. Some base
244 support patches related to `RMM v1.1 Alpha 9 specification`_ are also
245 merged, which includes:
246
247 * Update RMI feature register0 with Device Assignment(DA) fields.
248 * Add aarch64_stub libraries required by libspdm.
249 * Define PDEV AUX granules map/unmap helpers.
250 * Add DA specific granule state.
251
252- Fix checksum calculation of `console_info` data structure in RMM-EL3 boot
253 manifest.
254
255 * Note that this is a breaking change and EL3 firmware needs to be updated
256 to send the correct checksum.
257
258- Fix RTT_READ_ENTRY to set x3 correctly.
259
260- Fix deadlock in RMI_REC_CREATE.
261
262 * An error when aux granules are locked during REC_CREATE would have
263 resulted in a deadlock in RMM. This is fixed.
264
265- Fix error handling in attest key init sequence.
266
267- Fix checks on s2tte_get_ripas() in lib/s2tt.
268
269- Fix simd_context_init() call for SIMD_OWNER_NWD in unit tests.
270
271- Fix rmm-runtime to add `sb` instruction on realm_exit().
272
273- Fix outstanding Misra C 2012 issues in the source code.
274
275- Refactor `lib/attestation` to manage token state within the component.
276
277- Fix runtime to unlock RTT if the RTT walk succeeds in a corner case.
278
279- Add build option for plat token buffer size.
280
281- Fix calculation of VMPIDR_EL2 value to align with the specification.
282
283- Fix to ensure that physical address <= 48 bits for LPA2 disabled Realm
284 when running on a LPA2 capable hardware.
285
286- Remove hard-coded configuration of VTRC_EL2.PS.
287
288- Add workaround for Clang 18.x failure.
289
290- Fix usage of psa_hash_finish() in lib/measurement component.
291
292- Clear ISV bit for non emulatable data abort in rec->last_run_info.esr.
293
294- Fix to adjust heap size based on MAX_CPUS.
295
296- Revert setting of TSW bit in Realm HCR_EL2 flags.
297
298- Fix error handling in attest_init_realm_attestation_key() sequence
299 (`issue#25`_).
300
301==================================
302Build/Testing/Tooling improvements
303==================================
304
305- Add shrinkwrap overlays to facilitate RMM development and testing.
306
307- Add git helper to apply patches in submodule.
308
309- Add unittests for the s2tt library.
310
311- Enhance Cppcheck build target to fail the build if static
312 analysis errors are detected.
313
314=========
315Platforms
316=========
317
318- Rename the Rdfremont platform config to RD-V3.
319
320- Add support for QEMU SBSA platform.
321
322============================
323Known issues and limitations
324============================
325
326- Some capabilities mentioned in `RMM v1.0 REL0 specification`_ are
327 restricted or absent in TF-RMM as listed below:
328
329 * The support for Self-hosted debug in Realms is not implemented (`issue#23`_).
330
331=================
332Upcoming features
333=================
334
335- Prototype new features as described in `RMM v1.1 Alpha 9 specification`_.
336
337 * Realm Device Assignment - A feature which allows devices to be assigned to Realms,
338 attested and granted permission to access Realm owned memory.
339 * Planes - A feature which allows a Realm to be divided into multiple
340 mutually isolated execution environments, called Planes.
341 * Support FEAT_MEC in the Realm world.
342
343- Continue to enhance CBMC analysis to support more RMI commands.
344
345- Fuzz testing for RMM utilizing the `fake_host` architecture.
346
347- Implement support for Self-hosted debug in Realms.
348
349- Support Live Firmware Activation of RMM.
350
351- EL0 app support to run parts of RMM at EL0.
352
353.. _TF-A v2.12: https://git.trustedfirmware.org/TF-A/trusted-firmware-a/+/refs/tags/v2.12.0
354.. _RMM v1.0 REL0 specification: https://developer.arm.com/documentation/den0137/1-0rel0/?lang=en
355.. _RMM v1.1 Alpha 9 specification: https://developer.arm.com/-/cdn-downloads/permalink/Architectures/Armv9/DEN0137_1.1-alp9.zip
356
357******
Soby Mathew14c66842024-05-15 14:18:25 +0100358v0.5.0
359******
360
361The following sections have the details on the release. This release has been
362verified with `TF-A v2.11`_ release.
363
364============================
365New features in this release
366============================
367
368- Enabled FEAT_DIT for RMM execution.
369
370- Added support for FEAT_LPA2 to S2TT component.
371
372 * This enables creating Realms with LPA2 support.
373
374- Introduced the dynamic console framework for RMM.
375
376 * This framework allows EL3 to dynamically describe the console for use by
377 RMM and configure the console during boot.
378
379- Introduced the ``arm`` platform layer.
380
381 * The common ``arm`` platform is added which can be used
382 by any compatible SoC. This allows reuse of code across multiple
383 SoCs and possibly a single binary across them.
384 * Both FVP and QEMU are migrated to this common ``arm`` platform layer and
385 only requires platform specific defconfig file to configure RMM.
386
387======================================
388Bug fixes/improvements in this release
389======================================
390
391- Improvements to Exception handling in RMM.
392
393 * Separated Exception Stack for RMM exceptions.
394 * Added crashlog of register values for R-EL2 exceptions.
395 * Added backtrace to exception handler.
396
397- Improvements to S2TT component in RMM.
398
399 * Several optimizations to S2TT component are done.
400 * MISRA errors are fixed.
401 * The component is moved to its own folder in `lib`.
402 * All S2TT APIs now accept `realm_s2_context` as an argument.
403 * Issue related to the NS attributes not being checked during FOLD is fixed.
404
405- Reduced the memory required for `struct granule`.
406
407 * The data structure is optimized such that it is 4 bytes in size
408 compared to the previous 16 bytes.
409
410- Use DC ZVA for granule zeroing instead of memset().
411
412- Allow RTT FOLD to level 1 as mandated by RMM specification.
413
414- Additional clang-tidy checks are enabled for the project.
415
416 * The clang-tidy configuration can be found in ``.clang-tidy`` file at the
417 the root of the source tree.
418 * The errors flagged by the static analysis are corrected and the project
419 expects 0 errors for clang-tidy checks.
420
421- Enabled alignment fault check in RMM.
422
423 * Enabled Alignment fault check in SCTLR_EL2 register when
424 RMM_FPU_USE_AT_REL2=OFF. Associated fixes for some data structures
425 are also done as part of this work.
426
427- Fixed MISRA C 2012 violations detected by Coverity scan.
428
429- Fix to report accurate breakpoint and watchpoint numbers via RMI_FEATURES.
430
431- Fix to properly initialize MDCR_EL2.HPMN for each REC.
432
433- Fix to inject SEA for Realm access outside IPA space.
434
435- Allocate parameters for RIM extension on stack rather than global data.
436
437- Fixed spinlock_acquire() implementation on the fake_host architecture.
438
439- Fix to add +nosve compiler option to prevent compiler from generating SVE
440 instructions.
441
442- Fix to use -march=armv9.2 option to build RMM depending on compiler support.
443
444- Fixed build issue for Yocto by adding system includes to the CMAKE search
445 path.
446
447- Fix to retry RDNR instruction if it fails during attestation initialization.
448
449- Refactored lib/realm component. This component is split now into 2 new
450 libraries: `lib/granule` and `lib/slot_buf`.
451
452- Fix to make RMI_INJECT_SEA flag mutually exclusive to RMI EMUL_MMIO flag
453 during RMI_REC_ENTER.
454
455==================================
456Build/Testing/Tooling improvements
457==================================
458
459- Extended CBMC analysis to more RMI commands:
460
461 * Added CBMC testbench and analysis for the following RMI APIs:
462 RMI_VERSION, RMI_FEATURES, RMI_REALM_ACTIVATE, RMI_REALM_DESTROY,
463 RMI_REC_AUX_COUNT, RMI_REC_DESTROY.
464 * Increased CBMC coverage for RMI_DELEGATE and RMI_UNDELEGATE APIs.
465 * Integrated cbmc-viewer tool to CBMC analysis.
466 * Added option to build with GCC.
467 * Added tooling to detect CBMC result differences. Added a script that
468 compares the CBMC results to the baseline summary and this helps to
469 detect additional CBMC failures from baseline results.
470 * An application note is added to the documentation to describe
471 the CBMC integration with the project.
472
473- Improvements to unit-tests in RMM.
474
475 * Added unit testing framework and unit tests to SIMD layer in RMM.
476
477- Improvements to Cppcheck static analysis.
478
479 * The Cppcheck was already integrated into the build system and more work
480 was done to bring it inline with other static checks in the project.
481 * Fixed violations detected by Cppcheck MISRA addon.
482 * An application note is added to describe the Cppcheck integration.
483
484- Changes to logging for Release build.
485
486 * The default Release build LOG_LEVEL is reduced to 20 (LOG_LEVEL_NOTICE).
487
488- Fixed the broken CMAKE Ninja Generator Multi-config build.
489
490=========
491Platforms
492=========
493
494- Added base support for RD-Fremont platform.
495
496 * RD-Fremont also use the ``arm`` platform layer and only needs a
497 defconfig file to configure RMM appropriately.
498
499============================
500Known issues and limitations
501============================
502
503- Some capabilities as mentioned in `RMM v1.0 EAC5 specification`_ are
504 restricted or absent in TF-RMM as listed below:
505
506 * The support for Self-hosted debug in Realms is not implemented (`issue#23`_).
507 * Although the RMM allows CCA attestation token sizes of larger than 4KB,
508 there is a limitation on the size of the Platform attestation token part.
509 On the RMM-EL3 interface, there is only a shared buffer of 4KB that is
510 currently shared on the FVP. This needs to be enhanced so that larger
511 platform token sizes can be tested (`issue#24`_).
512
513- The attest_init_realm_attestation_key() does not always reset the RMM to the correct
514 state on encountering an error (`issue#25`_).
515
516=================
517Upcoming features
518=================
519
520- Prototype new features as described in `RMM v1.1 Alpha specification`_.
521
522 * Realm Device Assignment - A feature which allows devices to be assigned to Realms,
523 attested and granted permission to access Realm owned memory.
524 * Planes - A feature which allows a Realm to be divided into multiple
525 mutually isolated execution environments, called Planes.
526
527- Add unit-tests for Stage 2 MMU code (s2tt).
528
529- Continue to Enhance CBMC analysis to more RMI commands.
530
531- Fuzz testing for RMM utilizing the `fake_host` architecture.
532
533- Integrate more static analyzers into RMM build system.
534
535- Implement support for Self-hosted debug in realms.
536
537- Support FEAT_MEC in RMM.
538
539.. _TF-A v2.11: https://git.trustedfirmware.org/TF-A/trusted-firmware-a/+/refs/tags/v2.11.0
540.. _RMM v1.1 Alpha specification: https://developer.arm.com/-/cdn-downloads/PDF/Architectures/DEN0137_1.1-alp5_rmm-arch_external.pdf?__token__=st=1714479850~exp=2029839850~hmac=cca7b8c22f7b94e6c929d53176ac57c51487558b73fb27e5c181f4cc7231a83b
541.. _issue#23: https://github.com/TF-RMM/tf-rmm/issues/23
542.. _issue#24: https://github.com/TF-RMM/tf-rmm/issues/24
543.. _issue#25: https://github.com/TF-RMM/tf-rmm/issues/25
544
545******
Soby Mathew273ecb72023-11-20 12:28:33 +0000546v0.4.0
547******
548
549The following sections have the details on the release. This release has been
550verified with `TF-A v2.10`_ release.
551
552============================
553New features in this release
554============================
555
556- Added initial partial support for analysing RMM source code with
557 CBMC (https://www.cprover.org/cbmc/).
558
559 * A new HOST_VARIANT, `host_cbmc`, has been introduced for this purpose.
560 * The CBMC testbench files and autogenerated files from RMM machine
561 readable specification are imported into the source tree.
562 * An application note for the same is added to the documentation.
563
564- Aligned the implementation to `RMM v1.0 EAC5 specification`_.
565
566 * The relevant tag for the alignment is `rmm-spec-v1.0-eac5`_.
567 * There is also an intermediate RMM v1.0 EAC2 alignment which
568 is tagged `rmm-spec-v1.0-eac2`_.
569
570- Supported save and restore of Non Secure SME context when Realms are
571 scheduled.
572
573 * The SIMD abstraction in RMM was reworked to cater for this requirement.
574 * Added support to emulate SME specific feature ID registers.
575 * Support injecting UNDEF exception into realm when SME is accessed
576 within it.
577 * Also RMM now can handle SVE hint bit as specified by SMCCC v1.3
578 specification.
579
580- Added `TF-RMM Threat Model`_ to the documentation.
581
582- Added capability to privately map the per-CPU stack.
583
584 * This contains any stack overflows to the particular CPU and prevents
585 a CPU from corrupting another CPU stack.
586
587- Added FEAT_PAUTH and FEAT_BTI support to RMM and also capability to
588 use FEAT_PAUTH within realms.
589
590- Migrate to PSA Crypto API for attestation and measurement functionality
591 in RMM.
592
593- Added FEAT_LPA2 support to Stage 1 MMU code (lib/xlat) in RMM.
594
595- Added Stage 1 MMU setup design document.
596
597==================================
598Build/Testing/Tooling improvements
599==================================
600
601- Added static commit message checker which enforces the commit message
602 guidelines mandated for the project.
603
604- Added clang-tidy checker as one of the static analyzers.
605
606 * Several fixes to errors flagged by the static checker have been fixed.
607
608- Fixed issues found in xlat lib unittests.
609
610- Added github workflow for git submodules so that the TF-RMM dependencies
611 display correctly in github.
612
613- Added github workflow to configure an automatic message for PRs on GitHub
614 and also build and run RMM unittests for every update of the `main` branch.
615
616- Added FEAT_LPA2 unit tests for lib/xlat module.
617
618- Added RSI logger unit tests.
619
620=========
621Platforms
622=========
623
624- The support for QEMU virt platform was merged.
625
626======================================
627Bug fixes/improvements in this release
628======================================
629
630- Fixed issue with TLB invalidations for unprotected mappings during
631 RMI_RTT_DESTROY command.
632
633- Fixed an issue wherein attest token write may return without releasing
634 lock on the last level RTT of the mapped buffer.
635
636- Enable TSW bit in hcr_el2 when executing in Realm world so as to trap
637 any data cache maintenance instructions that operate by Set/Way.
638
639- Fixed issues flagged by coverity online scan. The defects detected
640 can be found in the `TF-RMM coverity scan online`_ homepage.
641
642- Fixed issues in s2tt management related to NS memory assignment/unassignment.
643
644- Added missing check to gicv3_hcr field.
645
646- Cache line align xlat lib data structures accessed by secondary CPUs to avoid
647 data corruption due to mismatched memory attribute accesses by RMM during
648 warm boot.
649
650- Corrected linker options when building qcbor library.
651
652- Fixes to comply with MISRA coding guidelines.
653
654- Adjusted mbedTLS heap size depending on MAX_CPUS in RMM.
655
656- Fixed issue with RMI_DATA_CREATE_UNKNOWN setting RIPAS to RAM.
657
658- Added 'ipa_bound' failure condition in RMI_DATA_DESTROY handler. Also added
659 'level_bound' failure condition for RMI_RTT_MAP_UNPROTECTED and
660 RMI_RTT_UNMAP_UNPROTECTED command handlers.
661
662- Fixed issue with rsi_log_on_exit() and modified the logging format.
663
664- Fixed issue with change `ipa_align` failure condition.
665
666- Unified design of RSI/PSCI handlers.
667
668- The issue with RMM config ``RMM_FPU_USE_AT_REL2`` is fixed and the SIMD
669 registers are saved and restored depending on the live register context in
670 use which be one of FPU, SVE or SME.
671
672- The compatibility check for RMM-EL3 interface version is hardened.
673
674- Issue related to attestation token interruption flow is fixed.
675
676- Enhanced the `fake_host` sample application to do Realm token creation.
677
678- Fixed D-cache maintenance in fvp_set_dram_layout().
679
680- Updated t_cose submodule to use upstream version rather than a forked
681 version.
682
683============================
684Known issues and limitations
685============================
686
687- Some capabilities as mentioned in `RMM v1.0 EAC5 specification`_ are
688 restricted or absent in TF-RMM as listed below:
689
690 * The RMI_RTT_FOLD command only allows folding upto Level 2 even though
691 the specification allows upto Level 1.
692 * The support for Self-hosted debug in Realms is not implemented.
693 * Although the RMM allows CCA attestation token sizes of larger than 4KB,
694 there is a limitation on the size of the Platform attestation token part.
695 On the RMM-EL3 interface, there is only a shared buffer of 4KB that is
696 currently shared on the FVP. This needs to be enhanced so that larger
697 platform token sizes can be tested.
698
699- The `rmm-el3-ifc` component does not always reset the RMM to the correct
700 state on encountering an error. This needs to be corrected.
701
702- The invocation of mmio_emulation() and sea_inj() functions need to be
703 mutually exclusive during schedule of a REC. Currently both the cases
704 are allowed to be satisfied at the same time which is incorrect.
705
706=================
707Upcoming features
708=================
709
710- FEAT_LPA2 support for Stage 2 MMU code (s2tt) in RMM.
711
712- Add unit-tests for Stage 2 MMU code (s2tt) and also any associated rework
713 for the s2tt component.
714
715- Enhance CBMC analysis to more RMI commands.
716
717- Fuzz testing for RMM utilizing the `fake_host` architecture.
718
719- Support for new capabilities like Device assignment as mandated by future
720 versions of RMM specification.
721
722- Integrate more static analyzers into RMM build system.
723
724- Implement support for Self-hosted debug in realms.
725
726
727.. _TF-A v2.10: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.10.0
728.. _RMM v1.0 EAC5 specification: https://developer.arm.com/documentation/den0137/1-0eac5/?lang=en
729.. _rmm-spec-v1.0-eac5: https://git.trustedfirmware.org/TF-RMM/tf-rmm.git/tag/?h=rmm-spec-v1.0-eac5
730.. _rmm-spec-v1.0-eac2: https://git.trustedfirmware.org/TF-RMM/tf-rmm.git/tag/?h=rmm-spec-v1.0-eac2
731.. _TF-RMM coverity scan online: https://scan.coverity.com/projects/tf-rmm-tf-rmm
732.. _TF-RMM Threat Model: https://tf-rmm.readthedocs.io/en/latest/security/threat_model/index.html
733
734******
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100735v0.3.0
736******
737
738The following sections have the details on the release. This release has been
739verified with `TF-A v2.9`_ release.
740
741============================
742New features in this release
743============================
744
745- Add support to create Realms which can make use of SVE, if present in
746 hardware.
747
748- Refactor the Stage 1 translation table library `lib/xlat` API to better
749 fit RMM usage. Also harden dynamic mapping via slot buffer mechanism by
750 use of ``TRANSIENT`` software defined attribute.
751
752- Add PMU support for Realms as described by RMM v1.0 Beta0 specification.
753
754- Support getting DRAM info from the Boot manifest dynamically at runtime.
755
756 * RMM can now support the 2nd DDR bank on FVP.
757
758==========================
759Build/Testing improvements
760==========================
761
762- Define a unit test framework using CppUTest for RMM.
763
764- Add unittests for `granule`, `slot-buffer` and Stage 1 translation table lib
765 `xlat`.
766
767- Improve the ``fake-host`` mock capability by adding support for per PE sysreg
768 emulation.
769
770- Improve the VA to PA mock layer for ``fake-host``.
771
772- Enable generation of gprof profiling data as part of ``fake-host`` runs.
773
774- Improve the sample application on ``host-build`` platform by adding the cold
775 attestation initialization flow. Also a sample minimal Realm create, run and
776 destroy sequence is added to showcase the RMI calls involved.
777
AlexeiFedorov47165422023-09-13 11:47:57 +0100778- Further improvements to the unit test framework :
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100779
780 * Restore the sysreg state between test runs so each test gets a known
781 sysreg state.
782 * Add capability to test assertions.
783 * Support dynamic behaviour for test harness depending on requirement.
784 * Add support for coverage report generation as part of unit test run.
785
786- Build improvements in RMM:
787
788 * Move mbedTLS build from configure stage to build stage.
789 * Simplify QCBOR build.
790 * Fix build artefact directory path to better cater to multi-config builds.
791
792=========================
793Bug fixes in this release
794=========================
795
796- Remove HVC exit handling from RMI_REC_ENTER handler.
797
798- Fix parameter in measurement_extend_sha512().
799
800- Fix issues in `lib/xlat` for some corner cases.
801
802- Mask MTE capability from `id_aa64pfr1_el1` so that Realms
803 can see that MTE is not supported.
804
805- Add isb() after writes to `cptr_el2` system register.
806
807- Fix the granule alignment check on granule_addr.
808
809- Fix some cppcheck warnings.
810
811- Properly handle errors for granule (un)delegate calls.
812
813- Fix the incorrect bit map manipulation for tracking VMID for realms.
814
815- Fix some incorrect Block mapping cases in Stage 2 translation.
816
817=================
818Upcoming features
819=================
820
821- RMM EAC Specification alignment.
822
823- Support Self-Hosted Debug Realms.
824
825- Support FEAT_PAuth for Realms and utilize the same for RMM.
826
827- Support LPA2 for Stage 2 Realm translation tables.
828
829- Threat model covering RMM data flows.
830
831- Enable Bounded Model Checker (CBMC) for source analysis.
832
833- Save and restore SME/SME2 context belonging to NS Host. This allows NS Host
834 to make use of SME/SME2 when Realms are scheduled.
835
836============================
837Known issues and limitations
838============================
839
840- The size of ``RsiHostCall`` structure is 256 bytes in the implementation
841 and aligns to `RMM Beta1 specification`_ rather than the 4 KB size
842 specified in `RMM Beta0 specification`_.
843
844- The `RMM Beta0 specification`_ does not require to have a CBOR bytestream
845 wrapper around the cca-platform-token and cca-realm-delegated-token, but
846 the RMM implementation does so and this is aligned with later versions
847 of the RMM specification (Beta2 onwards).
848
849- The RMM config ``RMM_FPU_USE_AT_REL2`` does not work as intended and
850 this config is disabled by default. This will be fixed in a future release.
851
Soby Mathewedf5f802023-05-23 09:45:10 +0100852- When the ``RSI_ATTEST_TOKEN_CONTINUE`` call is interrupted and then resumed
853 later by Host via ``RMI_REC_ENTER``, the original SMC is replayed again
854 with the original arguments rather than returning ``RSI_INCOMPLETE`` error
855 code to Realm. The result is that the interrupted RSI call is continued
856 again till completion and then returns back to Realm with the appropriate
857 error code.
858
Soby Mathewa7e3caf2023-05-09 13:37:44 +0100859.. _TF-A v2.9: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.9.0
860
861
862******
Soby Mathew8fc82c52022-11-21 12:35:41 +0000863v0.2.0
864******
865
866- This release has been verified with `TF-A v2.8`_ release.
867
868- The release has the following fixes and enhancements:
869
870 * Add support to render documentation on read-the-docs.
871 * Fix the known issue with RSI_IPA_STATE_GET returning
872 ``RSI_ERROR_INPUT`` for a `destroyed` IPA instead of
873 emulating data abort to NS Host.
874 * Fix an issue with RSI_HOST_CALL not returning back to Host
875 to emulate a stage2 data abort.
876 * Harden an assertion check for ``do_host_call()``.
877
878- The other known issues and limitations remain the same as
879 listed for v0.1.0_.
880
881.. _TF-A v2.8: https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git/tag/?h=v2.8.0
882
883******
Soby Mathewb4c6df42022-11-09 11:13:29 +0000884v0.1.0
885******
886
887- First TF-RMM source release aligned to `RMM Beta0 specification`_.
888 The specified interfaces : Realm Management Interface (RMI) and
889 Realm Service Interface (RSI) are implemented which can attest
890 and run Realm VMs as described by the `Arm CCA`_ Architecture.
891
892=================
893Upcoming features
894=================
895
896- Support SVE, Self-Hosted Debug and PMU in Realms
897- Support LPA2 for Stage 2 Realm translation tables.
898- Threat model covering RMM data flows.
899- Enable Bounded Model Checker (CBMC) for source analysis.
900- Unit test framework based on :ref:`RMM Fake host architecture`.
901
902============================
903Known issues and limitations
904============================
905
906The following is a list of issues which are expected to be fixed in the future
907releases of TF-RMM :
908
909- The size of ``RsiHostCall`` structure is 256 bytes in the implementation
910 and aligns to `RMM Beta1 specification`_ rather than the 4 KB size
911 specified in `RMM Beta0 specification`_.
912
913- The RSI_IPA_STATE_GET command returns error ``RSI_ERROR_INPUT`` for a
914 `destroyed` IPA instead of emulating data abort to Host.
915
916- The `RMM Beta0 specification`_ does not require to have a CBOR bytestream
917 wrapper around the cca-platform-token and cca-realm-delegated-token, but
918 the RMM implementation does so.
919
920---------------------------
921
922.. _RMM Beta0 specification: https://developer.arm.com/documentation/den0137/1-0bet0/?lang=en
923.. _RMM Beta1 specification: https://developer.arm.com/documentation/den0137/1-0bet1/?lang=en
924.. _Arm CCA: https://www.arm.com/architecture/security-features/arm-confidential-compute-architecture