Daniel Boulby | ccb7068 | 2021-04-28 19:40:39 +0100 | [diff] [blame^] | 1 | # 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 Deprez | 62405ad | 2020-10-26 18:51:49 +0100 | [diff] [blame] | 84 | |
| 85 | ## v2.4 |
| 86 | |
| 87 | This is the first drop to implement the TrustZone secure side S-EL2 firmware |
Olivier Deprez | 410a3ac | 2020-11-04 13:54:15 +0100 | [diff] [blame] | 88 | (SPM Core component) complying with FF-A v1.0. |
Olivier Deprez | 62405ad | 2020-10-26 18:51:49 +0100 | [diff] [blame] | 89 | It is a companion to the broader TF-A v2.4 release. |
| 90 | The normal world Hypervisor is maintained functional along with the |
| 91 | Hafnium CI test suite. |
| 92 | |
Daniel Boulby | ccb7068 | 2021-04-28 19:40:39 +0100 | [diff] [blame^] | 93 | #### Highlights |
Olivier Deprez | 62405ad | 2020-10-26 18:51:49 +0100 | [diff] [blame] | 94 | * 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 Deprez | 410a3ac | 2020-11-04 13:54:15 +0100 | [diff] [blame] | 123 | * 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 Deprez | 62405ad | 2020-10-26 18:51:49 +0100 | [diff] [blame] | 127 | * 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 Boulby | ccb7068 | 2021-04-28 19:40:39 +0100 | [diff] [blame^] | 142 | #### 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. |