blob: 3a9d7642991bd1cb4acf0971a9bded0a2a3af6ff [file] [log] [blame] [view]
Olivier Deprez55b74f82021-11-10 11:32:31 +01001# Change log
2
3## v2.6
4#### Highlights
5* FF-A Setup and discovery
6 * FF-A build time version updated to v1.1.
7 * Managed exit and notifications feature support enabled in SP manifests.
8 * Updated FFA_FEATURES to permit discovery of managed exit, schedule receiver,
9 and notification pending interrupt IDs.
10 * FFA_PARTITION_INFO_GET updated to permit managed exit and notification
11 support discovery.
12 * FFA_SPM_ID_GET added to permit discovering the SPMC endpoint ID (or the
13 SPMD ID at the secure physical FF-A instance).
14 * FFA_RXTX_UNMAP implementation added.
15* FF-A v1.1 notifications
16 * Added ABIs permitting VM (or OS kernel) to SP, and SP to SP asynchronous
17 signaling.
18 * Added generation of scheduler receiver (NS physical) and notification
19 pending (secure virtual) interrupts.
20 * The schedule receiver interrupt is donated from the secure world SGI
21 interrupt ID range.
22* FF-A v1.1 interrupt handling
23 * Added a GIC driver at S-EL2 permitting to trap and handle non-secure and
24 secure interrupts while the secure world runs.
25 * Added forwarding and handling of a secure interrupt while the normal world
26 runs.
27 * Added secure interrupt forwarding to the secure partition that had the
28 interrupt registered in its partition manifest.
29 * The interrupt deactivation happens through the Hafnium para-virtualized
30 interrupt controller interface.
31 * vCPU states, run time models and SP scheduling model are revisited as per
32 FF-A v1.1 Beta0 specification (see 'Known limitations' section below).
33* S-EL0 partitions support
34 * Added support for VHE architecture extension in the secure world (through
35 a build option).
36 * A partition bootstraps as an S-EL0 partition based on the exception-level
37 field in the FF-A manifest.
38 * It permits the implementation of applications on top of Hafnium without
39 relying on an operating system at S-EL1.
40 * It leverages the EL2&0 Stage-1 translation regime. Apps use FF-A
41 ABIs through the SVC conduit.
42 * Added FF-A v1.1 FFA_MEM_PERM_GET/SET ABIs permitting run-time update of
43 memory region permissions.
44 * It supersedes the existing S-EL1 shim architecture (without removing its
45 support).
46 * S-EL1 SP, S-EL0 SP or former S-EL0 SP+shim can all co-exist in the same
47 system.
48* SVE
49 * Support for saving/restoring the SVE live state such that S-EL2/Hafnium
50 preserves the normal world state on world switches.
51 * Secure partitions are permitted to use FP/SIMD while normal world uses
52 SVE/SIMD/FP on the same core.
53 * The SVE NS live state comprises FPCR/FPSR/FFR/p[16]/Z[32] registers.
54* LLVM/Clang 12
55 * The toolchain stored in prebuilts submodule is updated to LLVM 12.0.5.
56 * Build/static analyzer fixes done in the top and third party projects.
57 * Linux sources (used by the test infrastructure) are updated to 5.4.148.
58 The linux test kernel module build is updated to only depend on LLVM
59 toolchain.
60* Hafnium CI improvements
61 * Added two configurations permitting Hafnium testing in the secure world.
62 * First configuration launches both the Hypervisor in the normal world
63 and the SPMC in the secure world. This permits thorough FF-A ABI testing
64 among normal and secure world endpoints.
65 * The second configuration launches the SPMC alone for component testing
66 or SP to SP ABI testing.
67 * Hafnium CI Qemu version updated to v6.0.0 (implements VHE and FEAT_SEL2
68 extensions).
69* FF-A compliance fixes
70 * Added checks for valid memory permissions values in manifest memory and
71 device regions declarations.
72 * FFA_FEATURES fixed to state indirect messages are not supported by
73 the SPMC.
74 * Limit an SP to emit a direct request to another SP only.
75 * Memory sharing: fixed input validation and return values.
76 * FFA_RXTX_MAP fixed returned error codes.
77 * FFA_MSG_WAIT input parameters check hardened.
78
79#### Known limitations:
80* S-EL0 partitions/VHE: the feature is in an experimental stage and not all use
81 cases have been implemented or tested. Normal world to SP and SP to SP memory
82 sharing is not tested. Interrupt handling is not tested.
83* The current implementation does not support handling a secure interrupt that
84 is triggered while currently handling a secure interrupt. This restricts to
85 scenarios described in Table 8.13 and Table 8.14 of the FF-A v1.1 Beta0
86 specification. Priority Mask Register is not saved/restored during context
87 switching while handling secure interrupt.
88* Hafnium CI: scenarios involving the Hypervisor are left as test harness
89 purposes only, not meant for production use cases.
Daniel Boulbyccb70682021-04-28 19:40:39 +010090
91## v2.5
92#### Highlights
93* BTI/Pointer authentication support
94 * Add branch protection build option for FEAT_PAuth and FEAT_BTI to the
95 clang command line. This only affects the S-EL2 image.
96 * Enable pointer authentication by supplying a platform defined pseudo
97 random key.
98 * Enable BTI by setting the guarded page bit in MMU descriptors for
99 executable pages.
100* SMMUv3.2 S-EL2 support
101 * Add support for SMMUv3 driver to perform stage 2 translation, protection
102 and isolation of upstream peripheral device's DMA transactions.
103* FF-A v1.0 Non-secure interrupt handling
104 * Trap physical interrupts to S-EL2 when running a SP.
105 * Handle non secure interrupts that occur while an SP is executing,
106 performing managed exit if supported.
107 * Add basic support for the GICv3 interrupt controller for the AArch64
108 platform.
109* FF-A power management support at boot time
110 * Provide platform-independent power management implementations for the
111 Hypervisor and SPMC.
112 * Implement the FFA_SECONDARY_EP_REGISTER interface for an MP SP or SPMC
113 to register the secondary core cold boot entry point for each of their
114 execution contexts.
115 * Introduce a generic "SPMD handler" to process the power management events
116 that may be conveyed from SPMD to SPMC, such as core off.
117* FF-A Direct message interfaces
118 * Introduce SP to SP direct messaging.
119 * Fix bug in the MP SP to UP SP direct response handling.
120* FF-A Memory sharing interfaces
121 * Introduce SP to SP memory sharing.
122 * When a sender of a memory management operation reclaims memory, set the
123 memory regions permissions back to it's original configuration.
124 * Require default permissions to be supplied to the function
125 'ffa_memory_permissions_to_mode', so in the case where no permissions are
126 specified for a memory operation, the data and instruction permissions can
127 be set to the default.
128 * Encode Bit[63] of the memory region handle according to if the handle is
129 allocated by the Hypervisor or SPMC.
130* FF-A v1.0 spec compliance
131 * Return INVALID_PARAMETER error code instead of NOT_SUPPORTED for direct
132 messaging interfaces when an invalid sender or receiver id is given.
133 * Check that reserved parameter registers are 0 when invoking direct
134 messaging ABI interfaces.
135 * For SMC32 compliant direct message interfaces, only copy 32-bits
136 parameter values.
137 * Change the FF-A error codes to 32-bit to match the FF-A specification.
138 * Fix consistency with maintaining the calling convention bit of the
139 func id between the ffa_handler and the FFA_FEATURES function.
140* Remove primary VM dependencies in the SPMC
141 * Treat normal world as primary VM when running in the secure world.
142 * Create an SPMC boot flow.
143* Hafnium CI
144 * Enable Hafnium CI to include tests for Hafnium SPMC.
145 * Add basic exception handler to service VM's.
146* SIMD support
147 * Add saving/restoring of other world FP/NEON/SIMD state when entering and
148 exiting the SPMC.
149* SPMC early boot cache fix
150 * Import data cache clean and invalidation helpers from TF-A project and
151 provide an arch module for cache operations.
152 * Invalidate the SPMC image in the data cache at boot time to prevent
153 potential access to stale cache entries left by earlier boots stages.
154* Misc and bug fixes
155 * Complete vCPU state save prior to normal world exit.
156 * Update S-EL2 Stage-1 page table shareability from outer to inner.
157 * Add PL011 UART initialization code to set the IDRD and FBRD registers
158 according to the UART clock and baud rate specified at build time.
159 * License script checker fixes.
160
161#### Known limitations:
162* Secure interrupts not supported.
163* FF-A indirect message interface not supported in the secure world.
164* Only supporting models of MultiProcessor SP (vCPUs pinned to physical
165 CPUs) or UniProcessor SP (single vCPU).
166* The first secure partition booted must be a MP SP.
167* FFA_RXTX_UNMAP not implemented.
168* Use of an alternate caller provided buffer from RX/TX buffers for memory
169 sharing operations is not implemented.
170* A memory retrieve request to SPMC does not support the caller endpoint to
171 provide the range of IPA addresses to map the region to.
Olivier Deprez62405ad2020-10-26 18:51:49 +0100172
173## v2.4
174
175This is the first drop to implement the TrustZone secure side S-EL2 firmware
Olivier Deprez410a3ac2020-11-04 13:54:15 +0100176(SPM Core component) complying with FF-A v1.0.
Olivier Deprez62405ad2020-10-26 18:51:49 +0100177It is a companion to the broader TF-A v2.4 release.
178The normal world Hypervisor is maintained functional along with the
179Hafnium CI test suite.
180
Daniel Boulbyccb70682021-04-28 19:40:39 +0100181#### Highlights
Olivier Deprez62405ad2020-10-26 18:51:49 +0100182* FF-A v1.0 Setup and discovery interface
183 * Hypervisor implementation re-used and extended to the SPMC and SPs.
184 * Added partition info get ABI and appropriate properties response depending
185 on partition capabilities (PVM, Secondary VM or Secure Partitions).
186 * FF-A device-tree manifest parsing.
187 * FF-A partitions can declare memory/device regions, and RX/TX buffers that
188 the SPMC sets up in the SP EL1&0 Stage-2 translation regime at boot time.
189 * FF-A IDs normal and secure world split ranges.
190 * The SPMC maps the Hypervisor (or OS kernel) RX/TX buffers as non-secure
191 buffers in its EL2 Stage-1 translation regime on FFA_RXTX_MAP ABI
192 invocation from the non-secure physical FF-A instance.
193* FF-A v1.0 Direct message interface
194 * Added implementation for the normal world Hypervisor and test cases.
195 * Implementation extended to the SPMC and SPs.
196 * Direct message requests emitted from the PVM to a Secondary VM or a
197 Secure Partition (or OS Kernel to a Secure Partition). Direct message
198 responses emitted from Secondary VMs and Secure Partitions to the PVM.
199 * The secure world represents the "other world" (normal world Hypervisor
200 or OS kernel) vCPUs in an abstract "Hypervisor VM".
201* FF-A v1.0 memory sharing
202 * Hypervisor implementation re-used and extended to the SPMC and SPs.
203 * A NS buffer can be shared/lent/donated by a VM to a SP (or OS Kernel
204 to a SP).
205 * The secure world configures Stage-1 NS IPA output to access the NS PA
206 space.
207 * The secure world represents the "other world" (normal world Hypervisor
208 or OS kernel) memory pages in an abstract "Hypervisor VM" and tracks
209 memory sharing permissions from incoming normal world requests.
210* Secure world enablement
Olivier Deprez410a3ac2020-11-04 13:54:15 +0100211 * Secure Partitions booted in sequence on their primary execution context,
212 according to the boot order field in their partition manifest.
213 This happens during the secure boot process before the normal world
214 actually runs.
Olivier Deprez62405ad2020-10-26 18:51:49 +0100215 * The SPMC implements the logic to receive FF-A messages through the EL3
216 SPMD, process them, and either return to the SPMD (and normal world) or
217 resume a Secure Partition.
218 * Extract NS bit from HPFAR_EL2 on Stage-2 page fault.
219 * Prevent setup of LOR regions in SWd.
220 * Avoid direct PSCI calls down to EL3.
221* Platforms
222 * Added Arm FVP secure Hafnium build support.
223 * Added Arm TC0 "Total Compute" secure Hafnium build support.
224* Other improvements
225 * Re-hosting to trustedfirmware.org
226 * busy_secondary timer increased to improve CI stability.
227 * Removed legacy Hypervisor calls.
228 * Fix CPTR_EL2 TTA bit position.
229 * Report FAR_EL2 on injecting EL1 exception.
Daniel Boulbyccb70682021-04-28 19:40:39 +0100230#### Known limitations:
231* Not all fields of the FF-A manifest are actually processed by the Hafnium
232 device-tree parser.
233* SP to SP communication not supported.
234* SP to SP memory sharing not supported.
235* S-EL1 and SIMD contexts shall be saved/restored by EL3.
236* Multi-endpoint memory sharing not supported.
237* Interrupt management limited to trapping physical interrupts to
238 the first S-EL1 SP. Physical interrupt trapping at S-EL2 planned as
239 next release improvement.
240* Validation mostly performed using first SP Execution Context (vCPU0). More
241 comprehensive multicore enablement planned as next release improvement.