blob: 23755e388fbbeba03083f76306bf1228fe681c67 [file] [log] [blame] [view]
Daniel Boulbyccb70682021-04-28 19:40:39 +01001# Change log
2
3## v2.5
4#### Highlights
5* BTI/Pointer authentication support
6 * Add branch protection build option for FEAT_PAuth and FEAT_BTI to the
7 clang command line. This only affects the S-EL2 image.
8 * Enable pointer authentication by supplying a platform defined pseudo
9 random key.
10 * Enable BTI by setting the guarded page bit in MMU descriptors for
11 executable pages.
12* SMMUv3.2 S-EL2 support
13 * Add support for SMMUv3 driver to perform stage 2 translation, protection
14 and isolation of upstream peripheral device's DMA transactions.
15* FF-A v1.0 Non-secure interrupt handling
16 * Trap physical interrupts to S-EL2 when running a SP.
17 * Handle non secure interrupts that occur while an SP is executing,
18 performing managed exit if supported.
19 * Add basic support for the GICv3 interrupt controller for the AArch64
20 platform.
21* FF-A power management support at boot time
22 * Provide platform-independent power management implementations for the
23 Hypervisor and SPMC.
24 * Implement the FFA_SECONDARY_EP_REGISTER interface for an MP SP or SPMC
25 to register the secondary core cold boot entry point for each of their
26 execution contexts.
27 * Introduce a generic "SPMD handler" to process the power management events
28 that may be conveyed from SPMD to SPMC, such as core off.
29* FF-A Direct message interfaces
30 * Introduce SP to SP direct messaging.
31 * Fix bug in the MP SP to UP SP direct response handling.
32* FF-A Memory sharing interfaces
33 * Introduce SP to SP memory sharing.
34 * When a sender of a memory management operation reclaims memory, set the
35 memory regions permissions back to it's original configuration.
36 * Require default permissions to be supplied to the function
37 'ffa_memory_permissions_to_mode', so in the case where no permissions are
38 specified for a memory operation, the data and instruction permissions can
39 be set to the default.
40 * Encode Bit[63] of the memory region handle according to if the handle is
41 allocated by the Hypervisor or SPMC.
42* FF-A v1.0 spec compliance
43 * Return INVALID_PARAMETER error code instead of NOT_SUPPORTED for direct
44 messaging interfaces when an invalid sender or receiver id is given.
45 * Check that reserved parameter registers are 0 when invoking direct
46 messaging ABI interfaces.
47 * For SMC32 compliant direct message interfaces, only copy 32-bits
48 parameter values.
49 * Change the FF-A error codes to 32-bit to match the FF-A specification.
50 * Fix consistency with maintaining the calling convention bit of the
51 func id between the ffa_handler and the FFA_FEATURES function.
52* Remove primary VM dependencies in the SPMC
53 * Treat normal world as primary VM when running in the secure world.
54 * Create an SPMC boot flow.
55* Hafnium CI
56 * Enable Hafnium CI to include tests for Hafnium SPMC.
57 * Add basic exception handler to service VM's.
58* SIMD support
59 * Add saving/restoring of other world FP/NEON/SIMD state when entering and
60 exiting the SPMC.
61* SPMC early boot cache fix
62 * Import data cache clean and invalidation helpers from TF-A project and
63 provide an arch module for cache operations.
64 * Invalidate the SPMC image in the data cache at boot time to prevent
65 potential access to stale cache entries left by earlier boots stages.
66* Misc and bug fixes
67 * Complete vCPU state save prior to normal world exit.
68 * Update S-EL2 Stage-1 page table shareability from outer to inner.
69 * Add PL011 UART initialization code to set the IDRD and FBRD registers
70 according to the UART clock and baud rate specified at build time.
71 * License script checker fixes.
72
73#### Known limitations:
74* Secure interrupts not supported.
75* FF-A indirect message interface not supported in the secure world.
76* Only supporting models of MultiProcessor SP (vCPUs pinned to physical
77 CPUs) or UniProcessor SP (single vCPU).
78* The first secure partition booted must be a MP SP.
79* FFA_RXTX_UNMAP not implemented.
80* Use of an alternate caller provided buffer from RX/TX buffers for memory
81 sharing operations is not implemented.
82* A memory retrieve request to SPMC does not support the caller endpoint to
83 provide the range of IPA addresses to map the region to.
Olivier Deprez62405ad2020-10-26 18:51:49 +010084
85## v2.4
86
87This is the first drop to implement the TrustZone secure side S-EL2 firmware
Olivier Deprez410a3ac2020-11-04 13:54:15 +010088(SPM Core component) complying with FF-A v1.0.
Olivier Deprez62405ad2020-10-26 18:51:49 +010089It is a companion to the broader TF-A v2.4 release.
90The normal world Hypervisor is maintained functional along with the
91Hafnium CI test suite.
92
Daniel Boulbyccb70682021-04-28 19:40:39 +010093#### Highlights
Olivier Deprez62405ad2020-10-26 18:51:49 +010094* FF-A v1.0 Setup and discovery interface
95 * Hypervisor implementation re-used and extended to the SPMC and SPs.
96 * Added partition info get ABI and appropriate properties response depending
97 on partition capabilities (PVM, Secondary VM or Secure Partitions).
98 * FF-A device-tree manifest parsing.
99 * FF-A partitions can declare memory/device regions, and RX/TX buffers that
100 the SPMC sets up in the SP EL1&0 Stage-2 translation regime at boot time.
101 * FF-A IDs normal and secure world split ranges.
102 * The SPMC maps the Hypervisor (or OS kernel) RX/TX buffers as non-secure
103 buffers in its EL2 Stage-1 translation regime on FFA_RXTX_MAP ABI
104 invocation from the non-secure physical FF-A instance.
105* FF-A v1.0 Direct message interface
106 * Added implementation for the normal world Hypervisor and test cases.
107 * Implementation extended to the SPMC and SPs.
108 * Direct message requests emitted from the PVM to a Secondary VM or a
109 Secure Partition (or OS Kernel to a Secure Partition). Direct message
110 responses emitted from Secondary VMs and Secure Partitions to the PVM.
111 * The secure world represents the "other world" (normal world Hypervisor
112 or OS kernel) vCPUs in an abstract "Hypervisor VM".
113* FF-A v1.0 memory sharing
114 * Hypervisor implementation re-used and extended to the SPMC and SPs.
115 * A NS buffer can be shared/lent/donated by a VM to a SP (or OS Kernel
116 to a SP).
117 * The secure world configures Stage-1 NS IPA output to access the NS PA
118 space.
119 * The secure world represents the "other world" (normal world Hypervisor
120 or OS kernel) memory pages in an abstract "Hypervisor VM" and tracks
121 memory sharing permissions from incoming normal world requests.
122* Secure world enablement
Olivier Deprez410a3ac2020-11-04 13:54:15 +0100123 * Secure Partitions booted in sequence on their primary execution context,
124 according to the boot order field in their partition manifest.
125 This happens during the secure boot process before the normal world
126 actually runs.
Olivier Deprez62405ad2020-10-26 18:51:49 +0100127 * The SPMC implements the logic to receive FF-A messages through the EL3
128 SPMD, process them, and either return to the SPMD (and normal world) or
129 resume a Secure Partition.
130 * Extract NS bit from HPFAR_EL2 on Stage-2 page fault.
131 * Prevent setup of LOR regions in SWd.
132 * Avoid direct PSCI calls down to EL3.
133* Platforms
134 * Added Arm FVP secure Hafnium build support.
135 * Added Arm TC0 "Total Compute" secure Hafnium build support.
136* Other improvements
137 * Re-hosting to trustedfirmware.org
138 * busy_secondary timer increased to improve CI stability.
139 * Removed legacy Hypervisor calls.
140 * Fix CPTR_EL2 TTA bit position.
141 * Report FAR_EL2 on injecting EL1 exception.
Daniel Boulbyccb70682021-04-28 19:40:39 +0100142#### Known limitations:
143* Not all fields of the FF-A manifest are actually processed by the Hafnium
144 device-tree parser.
145* SP to SP communication not supported.
146* SP to SP memory sharing not supported.
147* S-EL1 and SIMD contexts shall be saved/restored by EL3.
148* Multi-endpoint memory sharing not supported.
149* Interrupt management limited to trapping physical interrupts to
150 the first S-EL1 SP. Physical interrupt trapping at S-EL2 planned as
151 next release improvement.
152* Validation mostly performed using first SP Execution Context (vCPU0). More
153 comprehensive multicore enablement planned as next release improvement.