1# Change Log & Release Notes 2 3This document contains a summary of the new features, changes, fixes and known 4issues in each release of Trusted Firmware-A. 5 6## 2.6 (2021-11-22) 7 8### ⚠ BREAKING CHANGES 9 10- **Architecture** 11 12 - **Activity Monitors Extension (FEAT_AMU)** 13 14 - The public AMU API has been reduced to enablement only 15 to facilitate refactoring work. These APIs were not previously used. 16 17 **See:** privatize unused AMU APIs ([b4b726e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b4b726ea868359cf683c07337b69fe91a2a6929a)) 18 19 - The `PLAT_AMU_GROUP1_COUNTERS_MASK` platform definition 20 has been removed. Platforms should specify per-core AMU counter masks 21 via FCONF or a platform-specific mechanism going forward. 22 23 **See:** remove `PLAT_AMU_GROUP1_COUNTERS_MASK` ([6c8dda1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6c8dda19e5f484f8544365fd71d965f0afc39244)) 24 25- **Libraries** 26 27 - **FCONF** 28 29 - FCONF is no longer added to BL1 and BL2 automatically 30 when the FCONF Makefile (`fconf.mk`) is included. When including this 31 Makefile, consider whether you need to add `${FCONF_SOURCES}` and 32 `${FCONF_DYN_SOURCES}` to `BL1_SOURCES` and `BL2_SOURCES`. 33 34 **See:** clean up source collection ([e04da4c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e04da4c8e132f43218f18ad3b41479ca54bb9263)) 35 36- **Drivers** 37 38 - **Arm** 39 40 - **Ethos-N** 41 42 - multi-device support 43 44 **See:** multi-device support ([1c65989](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1c65989e70c9734defc666e824628620b2060b92)) 45 46### New Features 47 48- **Architecture** 49 50 - **Activity Monitors Extension (FEAT_AMU)** 51 52 - enable per-core AMU auxiliary counters ([742ca23](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/742ca2307f4e9f82cb2c21518819425e5bcc0f90)) 53 54 - **Support for the `HCRX_EL2` register (FEAT_HCX)** 55 56 - add build option to enable FEAT_HCX ([cb4ec47](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cb4ec47b5c73e04472984acf821e6be41b98064f)) 57 58 - **Scalable Matrix Extension (FEAT_SME)** 59 60 - enable SME functionality ([dc78e62](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/dc78e62d80e64bf4fe5d5bf4844a7bd1696b7c92)) 61 62 - **Scalable Vector Extension (FEAT_SVE)** 63 64 - enable SVE for the secure world ([0c5e7d1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0c5e7d1ce376cabcebebc43dbf238fe4482ab2dc)) 65 66 - **Trace Buffer Extension (FEAT_TRBE)** 67 68 - enable access to trace buffer control registers from lower NS EL ([813524e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/813524ea9d2e4138246b8f77a772299e52fb33bc)) 69 - initialize trap settings of trace buffer control registers access ([40ff907](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/40ff90747098ed9d2a09894d1a886c10ca76cee6)) 70 71 - **Self-hosted Trace Extensions (FEAT_TRF)** 72 73 - enable trace system registers access from lower NS ELs ([d4582d3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d4582d30885673987240cf01fd4f5d2e6780e84c)) 74 - initialize trap settings of trace system registers access ([2031d61](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2031d6166a58623ae59034bc2353fcd2fabe9c30)) 75 - enable trace filter control register access from lower NS EL ([8fcd3d9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8fcd3d9600bb2cb6809c6fc68f945ce3ad89633d)) 76 - initialize trap settings of trace filter control registers access ([5de20ec](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5de20ece38f782c8459f546a08c6a97b9e0f5bc5)) 77 78 - **RME** 79 80 - add context management changes for FEAT_RME ([c5ea4f8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c5ea4f8a6679131010636eb524d2a15b709d0196)) 81 - add ENABLE_RME build option and support for RMM image ([5b18de0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5b18de09e80f87963df9a2e451c47e2321b8643a)) 82 - add GPT Library ([1839012](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1839012d5b5d431f7ec307230eae9890a5fe7477)) 83 - add Realm security state definition ([4693ff7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4693ff7225faadc5ad1bcd1c2fb3fbbb8fe1aed0)) 84 - add register definitions and helper functions for FEAT_RME ([81c272b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/81c272b3b71af38bc5cfb10bbe5722e328a1578e)) 85 - add RMM dispatcher (RMMD) ([77c2775](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/77c2775323a5ff8b77230f05c0cc57f830e9f153)) 86 - add Test Realm Payload (TRP) ([50a3056](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/50a3056a3cd33d395e8712e1d1e67a8840bf3db1)) 87 - add xlat table library changes for FEAT_RME ([3621823](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/362182386bafbda9e6671be921fa30cc20610d30)) 88 - disable Watchdog for Arm platforms if FEAT_RME enabled ([07e96d1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/07e96d1d2958b6f121476fd391ac67bf8c2c4735)) 89 - run BL2 in root world when FEAT_RME is enabled ([6c09af9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6c09af9f8b36cdfa1dc4d5052f7e4792f63fa88a)) 90 91- **Platforms** 92 93 - **Allwinner** 94 95 - add R329 support ([13bacd3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/13bacd3bc3e6b76009adf9183e5396b6457eb12c)) 96 97 - **Arm** 98 99 - add FWU support in Arm platforms ([2f1177b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2f1177b2b9ebec3b2fe92607cd771bda1dc9cbfc)) 100 - add GPT initialization code for Arm platforms ([deb4b3a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/deb4b3a63e3a52f2e9823865a1932f6289ccb7ac)) 101 - add GPT parser support ([ef1daa4](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ef1daa420f7b2920b2ee35379de2aefed6ab2605)) 102 - enable PIE when RESET_TO_SP_MIN=1 ([7285fd5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7285fd5f9aa6d9cc0e0f1dc9c71785b46a88d999)) 103 104 - **FPGA** 105 106 - add ITS autodetection ([d7e39c4](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d7e39c43f2f58aabb085ed7b8f461f9ece6002d0)) 107 - add kernel trampoline ([de9fdb9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/de9fdb9b5925ae08137d4212a85e9a1d319509c9)) 108 - determine GICR base by probing ([93b785f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/93b785f5ae66a6418581c304c83a346e8baa5aa3)) 109 - query PL011 to learn system frequency ([d850169](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d850169c9c233c4bc413d8319196557b54683688)) 110 - support GICv4 images ([c69f815](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c69f815b09ab85d3ace8fd2979ffafb1184ec76c)) 111 - write UART baud base clock frequency into DTB ([422b44f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/422b44fb56db7ca8b1a2f9f706733d7d4c2fdeb1)) 112 113 - **FVP** 114 115 - enable external SP images in BL2 config ([33993a3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/33993a3737737a03ee5a9d386d0a027bdc947c9c)) 116 - add memory map for FVP platform for FEAT_RME ([c872072](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c8720729726faffc39ec64f3a02440a48c8c305a)) 117 - add RMM image support for FVP platform ([9d870b7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9d870b79c16ef09b0c4a9db18e071c2fa235d1ad)) 118 - enable trace extension features by default ([cd3f0ae](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cd3f0ae6f855b2998bc09e5c3a458528c92acb90)) 119 - pass Event Log addr and size from BL1 to BL2 ([0500f44](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0500f4479eb1d0d5ab9e83dac42b633a5ff677dd)) 120 121 - **FVP-R** 122 123 - support for TB-R has been added 124 - configure system registers to boot rich OS ([28bbbf3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/28bbbf3bf583e0c85004727e694455dfcabd50a4)) 125 126 - **RD** 127 128 - **RD-N2** 129 130 - add support for variant 1 of rd-n2 platform ([fe5d5bb](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fe5d5bbfe6bd0f386f92bdc419a7e04d885d5b43)) 131 - add tzc master source ids for soc dma ([3139270](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3139270693ab0fc6d66fed4fe11e183829b47e2e)) 132 133 - **SGI** 134 135 - add CPU specific handler for Neoverse N2 ([d932a58](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d932a5831e26620d61d171d0fd8bc2f14938e6f1)) 136 - add CPU specific handler for Neoverse V1 ([cbee43e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cbee43ebd69377bce1c4fa8d40c6fd67f2be2ee4)) 137 - increase max BL2 size ([7186a29](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7186a29bbfe3044d5e8001ddfe1d9238578e0944)) 138 - enable AMU for RD-V1-MC ([e8b119e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e8b119e03ad9de5fc440e5929287c94c22fc3946)) 139 - enable use of PSCI extended state ID format ([7bd64c7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7bd64c70e91f73a236b84fb51d5045e308479b5a)) 140 - introduce platform variant build option ([cfe1506](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cfe1506ee8303d9e0714b3a5b2cd165f76ad5d11)) 141 142 - **TC** 143 144 - enable MPMM ([c19a82b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c19a82bef08df58350f1b6668e0604ff8a5bd46d)) 145 - Enable SVE for both secure and non-secure world ([10198ea](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/10198eab3aa7b0eeba10d9667197816b052ba3e4)) 146 - populate HW_CONFIG in BL31 ([34a87d7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/34a87d74d9fbbe8037431ea5101110a9f1cf30e1)) 147 - introduce TC1 platform ([6ec0c65](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6ec0c65b09745fd0f4cee44ee3aa99870303f448)) 148 - add DRAM2 to TZC non-secure region ([76b4a6b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/76b4a6bb208c22b1c5971964a209ff7d54982348)) 149 150 - add bootargs node ([4a840f2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4a840f27cd7a05d8e3687aa325adcd019c0d22ee)) 151 - add cpu capacity to provide scheduling information ([309f593](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/309f5938e610c73cb51b3ba175fed971f49d0888)) 152 - add Ivy partition ([a19bd32](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a19bd32ed14c33571f3715198d47bac9d0f2808e)) 153 - add support for trusted services ([ca93248](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ca9324819ee308f9b3a4bb004f02a512c8f301f6)) 154 - update Matterhorn ELP DVFS clock index ([a2f6294](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a2f6294c98935895d4592ef7e30058ca6e995f4b)) 155 - update mhuv2 dts node to align with upstream driver ([63067ce](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/63067ce87e4afa193b2c7f6a4917d1e54b61b000)) 156 157 - **Diphda** 158 159 - adding the diphda platform ([bf3ce99](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bf3ce9937182e5d8d91e058baabb8213acedacdb)) 160 - disabling non volatile counters in diphda ([7f70cd2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7f70cd29235cc5e96ff6b5f509c7e4260bec5610)) 161 - enabling stack protector for diphda ([c7e4f1c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c7e4f1cfb84136a7521f26e403a6635ffdce4a2b)) 162 163 - **Marvell** 164 165 - introduce t9130_cex7_eval ([d01139f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d01139f3b59a1bc6542e74f52ff3fb26eea23c69)) 166 167 - **Armada** 168 169 - **A8K** 170 171 - allow overriding default paths ([0b702af](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0b702afc3aabc349a513a5b00397b58a62fea634)) 172 173 - **MediaTek** 174 175 - enable software reset for CIRQ ([b3b162f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b3b162f3b48e087f6656513862a6f9e1fa0757b1)) 176 177 - **MT8192** 178 179 - add DFD control in SiP service ([5183e63](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5183e637a0496ad8dfbd8c892bc874ac6a1531bf)) 180 181 - **MT8195** 182 183 - add DFD control in SiP service ([3b994a7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3b994a75306cc487144dd8e2e15433799e62e6f2)) 184 - add display port control in SiP service ([7eb4223](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7eb42237575eb3f241c9b22efc5fe91368470aa6)) 185 - remove adsp event from wakeup source ([c260b32](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c260b3246b6be27c7463d36ce7f76368c94a8540)) 186 - add DCM driver ([49d3bd8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/49d3bd8c4c80ecd19ecfd74812ff1eaa01478cdd)) 187 - add EMI MPU basic drivers ([75edd34](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/75edd34ade8efaa8a76c5fd59103454023632989)) 188 - add SPM suspend driver ([859e346](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/859e346b89461f31df17b76ef25ce9e8d2a7279d)) 189 - add support for PTP3 ([0481896](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/048189637ead887787bd5bc47b1dfab98f321705)) 190 - add vcore-dvfs support ([d562130](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d562130ea9637b885135a5efe41cb98f2365754f)) 191 - support MCUSYS off when system suspend ([d336e09](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d336e093dd9ec917ce69484eae8914d98efa328d)) 192 193 - **NXP** 194 195 - add build macro for BOOT_MODE validation checking ([cd1280e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cd1280ea2e5c8be6f28485a2d5054d06e54e74c1)) 196 - add CCI and EPU address definition ([6cad59c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6cad59c429b4382ad62aee3a67fa1b3fd4ad38b7)) 197 - add EESR register definition ([8bfb168](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8bfb16813aff9b3dcbeaa2f77027d44b97f04b6d)) 198 - add SecMon register definition for ch_3_2 ([66f7884](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/66f7884b5229b1d2977d73d105af1c34cb55f95d)) 199 - define common macro for ARM registers ([35efe7a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/35efe7a4cea4b3c55b661aac49ef1a85ca8feaa9)) 200 - define default PSCI features if not defined ([a204785](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a2047853224083328ef67cacbc17a2001ba14701)) 201 - define default SD buffer ([4225ce8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4225ce8b87635287ecf5cd3baaf31ea703a2640b)) 202 203 - **i.MX** 204 205 - **i.MX 8M** 206 207 - add sdei support for i.MX8MN ([ce2be32](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ce2be321e8a5865871810b36c580181ea95a1a64)) 208 - add sdei support for i.MX8MP ([6b63125](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6b63125c415491417e1c389e4015be5ebdee2841)) 209 - add SiP call for secondary boot ([9ce232f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9ce232fe985a0bb308af459ede8a22629255d4e7)) 210 - add system_reset2 implementation ([60a0dde](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/60a0dde91bd03f4011c1d52d4d3aea8166e939a0)) 211 212 - **i.MX 8M Mini** 213 214 - enlarge BL33 (U-boot) size in FIP ([d53c9db](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d53c9dbf9ff9c435552b62f47fb95bfe86d025e3)) 215 216 - **i.MX 8M Plus** 217 218 - add imx8mp_private.h to the build ([91566d6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/91566d663b26434813fa674412bb695be1965557)) 219 - add in BL2 with FIP ([75fbf55](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/75fbf5546b7beca93e4782bc35906f9536392e04)) 220 - add initial definition to facilitate FIP layout ([f696843](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f696843eab5cf0547b6c6307eaccea25678654c4)) 221 - enable Trusted Boot ([a16ecd2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a16ecd2cff36b3a8a76d223f4e272e165c941b31)) 222 223 - **Layerscape** 224 225 - add ls1028a soc and board support ([52a1e9f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/52a1e9ff37251987b71b743951038cd8d1fa0ba4)) 226 227 - **LX2** 228 229 - add SUPPORTED_BOOT_MODE definition ([28b3221](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/28b3221aebdd48577e2288a75cd2f7547da514e9)) 230 231 - **LS1028A** 232 233 - add ls1028a soc support ([9d250f0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9d250f03d7a38cac86655495879b2151b877db0d)) 234 235 - **LS1028ARDB** 236 237 - add ls1028ardb board support ([34e2112](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/34e2112d1a3a8e4ea33a24bdc6505518266333a9)) 238 239 - **QTI** 240 241 - **SC7280** 242 243 - add support for pmk7325 ([b8a0511](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b8a05116ed2a87a9689c4f9be6218a4bce88034a)) 244 - support for qti sc7280 plat ([46ee50e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/46ee50e0b34e19d383a28bc3b3dadbfb4c07b270)) 245 246 - **Renesas** 247 248 - **R-Car** 249 250 - change process for Suspend To RAM ([731aa26](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/731aa26f38d76645b6d50077c28dffb9b02dd08a)) 251 252 - **R-Car 3** 253 254 - add a DRAM size setting for M3N ([f95d551](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f95d551217a287bd909aa3c82f4ade4986ad7244)) 255 - add new board revision for Salvator-XS/H3ULCB ([4379a3e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4379a3e9744cf3b0844446335aca40357a889b9a)) 256 - add optional support for gzip-compressed BL33 ([ddf2ca0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ddf2ca03979ea9fad305b1bc59beb6e27f0e1c02)) 257 - add process of SSCG setting for R-Car D3 ([14f0a08](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/14f0a0817297905c03ddf2c4c6040482ef71d744)) 258 - add process to back up X6 and X7 register's value ([7d58aed](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7d58aed3b05fa8c677a7c823c1ca5017a462a3d3)) 259 - add SYSCEXTMASK bit set/clear in scu_power_up ([63a7a34](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/63a7a34706eedba4d13ce6fc661a634801cf8909)) 260 - apply ERRATA_A53_1530924 and ERRATA_A57_1319537 ([2892fed](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2892fedaf27d8bbc68780a4a2c506c768e81b9f1)) 261 - change the memory map for OP-TEE ([a4d821a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a4d821a5a625d941f95ec39fb51ac4fc07c46c5c)) 262 - emit RPC status to DT fragment if RPC unlocked ([12c75c8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/12c75c8886a0ee69d7e279a48cbeb8d1602826b3)) 263 - keep RWDT enabled ([8991086](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/899108601a0c3b08ead5e686d92ea0794700ff35)) 264 - modify LifeC register setting for R-Car D3 ([5460f82](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5460f82806752e419fdd6862e8ca9c5fefbee3f2)) 265 - modify operation register from SYSCISR to SYSCISCR ([d10f876](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d10f87674ecee54cffe1ab554cc05733fd16c7f0)) 266 - modify SWDT counter setting for R-Car D3 ([053c134](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/053c134683cf74fbf4efad311815b806821f1436)) 267 - remove access to RMSTPCRn registers in R-Car D3 ([71f2239](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/71f2239f53cd3137ad6abdaf0334dc53f2f21cb1)) 268 - update DDR setting for R-Car D3 ([042d710](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/042d710d1d917357c5142b340c79978264d3afb1)) 269 - update IPL and Secure Monitor Rev.3.0.0 ([c5f5bb1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c5f5bb17abfcf6c0eeb3e6c3d70499de0bd6abc0)) 270 - use PRR cut to determine DRAM size on M3 ([42ffd27](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/42ffd279dd1a686b19e2f1b69d2e35413d5efeba)) 271 272 - **ST** 273 274 - add a new DDR firewall management ([4584e01](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4584e01dc643665038004f6c8a4f8bd64e14dacb)) 275 - add a USB DFU stack ([efbd65f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/efbd65fa7b5cf70f20d6b18152741ccdf8a65bb6)) 276 - add helper to save boot interface ([7e87ba2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7e87ba2598a07facdeb73237dcb350a261ac17b6)) 277 - add STM32CubeProgrammer support on USB ([afad521](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/afad5214a79259f56bc2003b00859abfe8a18d4d)) 278 - add STM32MP_EMMC_BOOT option ([214c8a8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/214c8a8d08b2b3c24f12cbc69f497f44851ca524)) 279 - create new helper for DT access ([ea97bbf](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ea97bbf6a001b270fd0a25b4b0d0c382e277f3f8)) 280 - implement platform functions for SMCCC_ARCH_SOC_ID ([3d20178](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3d201787e8246022b1f193283c12e7cb4bfc83ff)) 281 - improve FIP image loading from MMC ([18b415b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/18b415be9d631b3e0c3a3caacc5f02edb9413f6b)) 282 - manage io_policies with FCONF ([d5a84ee](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d5a84eeaac2c8ce14d3f2662dc9523b4abf41516)) 283 - use FCONF to configure platform ([29332bc](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/29332bcd680ce7e5f864813d9a900360f5e35d41)) 284 - use FIP to load images ([1d204ee](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1d204ee4ab12893fceb12097bd4f0a074be253b2)) 285 286 - **ST32MP1** 287 288 - add STM32MP_USB_PROGRAMMER target ([fa92fef](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fa92fef0a024cdb537fe56c84a0156cc48c1ac2d)) 289 - add USB DFU support for STM32MP1 ([942f6be](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/942f6be211d4816ad2568d30d807b8fd53d7f981)) 290 291 - **Xilinx** 292 293 - **Versal** 294 295 - add support for SLS mitigation ([302b4df](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/302b4dfb8fb0041959b8593a098ccae6c61e3238)) 296 297 - **ZynqMP** 298 299 - add support for runtime feature config ([578f468](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/578f468ac058bbb60b08f78e2aa2c20cdc601620)) 300 - sync IOCTL IDs ([38c0b25](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/38c0b2521a0ea0951f4e1ee678ccdbce5fc07a98)) 301 - add SDEI support ([4143268](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4143268a5ca8f91f1014e0d83edf766946ffff76)) 302 - add support for XCK26 silicon ([7a30e08](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7a30e08b70e7fbb745554d500182bb6e258c5ab8)) 303 - extend DT description by TF-A ([0a8143d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0a8143dd636d4234dd2e79d32cb49dc80675c68f)) 304 305- **Bootloader Images** 306 307 - import BL_NOBITS_{BASE,END} when defined ([9aedca0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9aedca021d917c7435aa2a0405972aa9d44493a2)) 308 309- **Services** 310 311 - **FF-A** 312 313 - adding notifications SMC IDs ([fc3f480](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fc3f480023e3a52460add25f18dd550dde44d9ff)) 314 - change manifest messaging method ([bb320db](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bb320dbc4751f7ea0c37ffba07d14628e58081d0)) 315 - feature retrieval through FFA_FEATURES call ([96b71eb](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/96b71eb9597efbf4857216cac1caeefc9e8bbf3e)) 316 - update FF-A version to v1.1 ([e1c732d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e1c732d46fa91231b39209621ead1e5a5fb2c497)) 317 - add Ivy partition to tb fw config ([1bc02c2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1bc02c2e0f63b6a7863e10cf6189292d42e693db)) 318 - add support for FFA_SPM_ID_GET ([70c121a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/70c121a258e43dc2462ed528b44d92594ffb27b3)) 319 - route secure interrupts to SPMC ([8cb99c3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8cb99c3fc3539bb9926e73a1c33fd72f424fc453)) 320 321- **Libraries** 322 323 - **CPU Support** 324 325 - add support for Hayes CPU ([7bd8dfb](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7bd8dfb85a8bf5c22d6a39f4538b89cc748090d1)) 326 - add support for Hunter CPU ([fb9e5f7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fb9e5f7bb76e9764b3ecd7973668c851015fa1b4)) 327 - workaround for Cortex A78 AE erratum 1941500 ([47d6f5f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/47d6f5ff16d1f2ad009d630a381054b10fa0a06f)) 328 - workaround for Cortex A78 AE erratum 1951502 ([8913047](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8913047a52e646877812617a2d98cff99494487b)) 329 330 - **MPMM** 331 332 - add support for MPMM ([6812078](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/68120783d6d6f99c605e9f746ee0e91e2908feb1)) 333 334 - **OP-TEE** 335 336 - introduce optee_header_is_valid() ([b84a850](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b84a850864c05fef587fcbb301f955428966de64)) 337 338 - **PSCI** 339 340 - require validate_power_state to expose CPU_SUSPEND ([a1d5ac6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a1d5ac6a5aa5d9d18a481de20d272f64a71391f7)) 341 342 - **SMCCC** 343 344 - add bit definition for SMCCC_ARCH_SOC_ID ([96b0596](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/96b0596ea25e1f03b862a5bfaa92add6c3e51a33)) 345 346- **Drivers** 347 348 - **FWU** 349 350 - add FWU metadata header and build options ([5357f83](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5357f83d4ee89fb831d7e4f6149ae2f652e1b9af)) 351 - add FWU driver ([0ec3ac6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0ec3ac60d86b75d132e7a63fc09ea47e67f90bbd)) 352 - avoid booting with an alternate boot source ([4b48f7b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4b48f7b56577a78cdc9a2b47280cb62cbae0f7c3)) 353 - avoid NV counter upgrade in trial run state ([c0bfc88](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c0bfc88f8e8e03974834cbcacbbfbd5f202a2857)) 354 - initialize FWU driver in BL2 ([396b339](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/396b339dc20b97ddd75146e03467a255e28f31b9)) 355 - introduce FWU platform-specific functions declarations ([efb2ced](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/efb2ced256dacbab71ca11cbc87f70f413ca6729)) 356 357 - **I/O** 358 359 - **MTD** 360 361 - offset management for FIP usage ([9a9ea82](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9a9ea82948fd2f1459b6351cb0641f3f77b4e6de)) 362 363 - **Measured Boot** 364 365 - add documentation to build and run PoC ([a125c55](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a125c556230501ee0f5ec9f8b0b721625d484a41)) 366 - move init and teardown functions to platform layer ([47bf3ac](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/47bf3ac31ec84d4b221fdef760c04b5f4416cba4)) 367 - image hash measurement and recording in BL1 ([48ba034](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/48ba0345f7b42880ec4442d7e90e3e1af95feadd)) 368 - update tb_fw_config with event log properties ([e742bcd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e742bcdae0d28dc14a2aa0b4ca30f50420bb5ebe)) 369 370 - **MMC** 371 372 - boot partition read support ([5014b52](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5014b52dec0c2527ca85c0fbe9c9281a24cc7b10)) 373 374 - **MTD** 375 376 - **NAND** 377 378 - count bad blocks before a given offset ([bc3eebb](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bc3eebb25d5ee340e56047d0e46b81d5af85ff17)) 379 380 - **SCMI** 381 382 - add power domain protocol ([7e4833c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7e4833cdde8235d228f1f1c40f52b989ad5aa98a)) 383 384 - **Arm** 385 386 - **Ethos-N** 387 388 - multi-device support ([1c65989](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1c65989e70c9734defc666e824628620b2060b92)) 389 390 - **GIC** 391 392 - **GICv3** 393 394 - detect GICv4 feature at runtime ([858f40e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/858f40e379684fefc8b52c7b9e60576bc3794a69)) 395 - introduce GIC component identification ([73a643e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/73a643eed9d88910a09ca666bc7ab7f5e532324e)) 396 - multichip: detect GIC-700 at runtime ([feb7081](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/feb7081863f454b9e465efc074ca669f7a4c783d)) 397 398 - **GIC-600AE** 399 400 - introduce support for Fault Management Unit ([2c248ad](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2c248ade2e958eed33127b4ea767fbb7499f31a7)) 401 402 - **TZC** 403 404 - **TZC-400** 405 406 - update filters by region ([ce7ef9d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ce7ef9d146ce5ca6b9be5ef049377b3817d53d10)) 407 408 - **MediaTek** 409 410 - **APU** 411 412 - add mt8192 APU device apc driver ([f46e1f1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f46e1f18539d6d992c82ae605c2cd2a1d0757fa4)) 413 - add mt8192 APU iommap regions ([2671f31](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2671f3187249d641c55929c812d6691aeeff502a)) 414 - add mt8192 APU SiP call support ([ca4c0c2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ca4c0c2e78eb19d442de4608d9096a755b540a37)) 415 - setup mt8192 APU_S_S_4 and APU_S_S_5 permission ([77b6801](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/77b6801966d203e09ca118fad42543e934d73e6f)) 416 417 - **EMI MPU** 418 419 - add MPU support for DSP ([6c4973b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6c4973b0a9a75aa83233b696c97d573426eebd98)) 420 421 - **NXP** 422 423 - **DCFG** 424 425 - define RSTCR_RESET_REQ ([6c5d140](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6c5d140ed99cfec47b239acc242c0f3db1e3bf7c)) 426 427 - **FLEXSPI** 428 429 - add MT35XU02G flash info ([a4f5015](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a4f5015a0080134251e9272719f5dad1ce2aa842)) 430 431 - **Renesas** 432 433 - **R-Car3** 434 435 - add extra offset if booting B-side ([993d809](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/993d809cc115ce23dd2df1df19dc8bb548cc19cd)) 436 - add function to judge a DDR rank ([726050b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/726050b8e2d2ee2234e103e2df55f9c7f262c851)) 437 438 - **ST** 439 440 - manage boot part in io_mmc ([f3d2750](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f3d2750aa2293c0279bc447a85771827ca8b74c1)) 441 442 - **USB** 443 444 - add device driver for STM32MP1 ([9a138eb](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9a138eb5f29f6747e181a1b3b4199ad57721a3e0)) 445 446 - **USB** 447 448 - add a USB device stack ([859bfd8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/859bfd8d42341c6dea2b193db79dc4828e074ad7)) 449 450- **Miscellaneous** 451 452 - **Debug** 453 454 - add new macro ERROR_NL() to print just a newline ([fd1360a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fd1360a339e84ccd49f8a2d8a42e4c131a681b3c)) 455 456 - **CRC32** 457 458 - **Hardware CRC32** 459 460 - add support for HW computed CRC ([a1cedad](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a1cedadf73863ff103fecd64fa188334e1541337)) 461 462 - **Software CRC32** 463 464 - add software CRC32 support ([f216937](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f21693704a7bac275e12b44ae30fd210bc317175)) 465 466 - **DT Bindings** 467 468 - add STM32MP1 TZC400 bindings ([43de546](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/43de546b909947ab44f104aaee02b98fba70f44c)) 469 470 - **FDT Wrappers** 471 472 - add CPU enumeration utility function ([2d9ea36](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2d9ea360350303e37a8dd39f3599ac88aaef0ff9)) 473 474 - **FDTs** 475 476 - add for_each_compatible_node macro ([ff76614](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ff766148b52bfecf09728a83fc3becc7941d943c)) 477 - introduce wrapper function to read DT UUIDs ([d13dbb6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d13dbb6f1d5e28737a3319af035a6cb991bc6f8f)) 478 - add firewall regions into STM32MP1 DT ([86b43c5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/86b43c58a4105c8cef13d860dd73fa9bd560526a)) 479 - add IO policies for STM32MP1 ([21e002f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/21e002fb777fad9d02a94dc961f077fb444517fa)) 480 - add STM32MP1 fw-config DT files ([d9e0586](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d9e0586b619b331eb2db75911ca82f927e20bd1c)) 481 482 - **STM32MP1** 483 484 - align DT with latest kernel ([e8a953a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e8a953a9b85806f7324c8c7245435d5b9226c279)) 485 - delete nodes for non-used boot devices ([4357db5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4357db5b17ce6ba7357dd99276f34ab497ce60ef)) 486 487 - **NXP** 488 489 - **OCRAM** 490 491 - add driver for OCRAM initialization ([10b1e13](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/10b1e13bd200849ff134dd8d2fde341a8526f563)) 492 493 - **PSCI** 494 495 - define CPUECTLR_TIMER_2TICKS ([3a2cc2e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3a2cc2e262890cffee1fc46835e85be6055189e8)) 496 497- **Dependencies** 498 499 - **libfdt** 500 501 - also allow changing base address ([4d585fe](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4d585fe52feb231d5e73ec50a505122d5e9bf450)) 502 503### Resolved Issues 504 505- **Architecture** 506 507- **Platforms** 508 509 - print newline before fatal abort error message ([a5fea81](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a5fea8105887d0dd15edf94aebd591b1b6b5ef05)) 510 511 - **Allwinner** 512 513 - delay after enabling CPU power ([86a7429](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/86a7429e477786dad6fab002538aef825f4ca35a)) 514 515 - **Arm** 516 517 - correct UUID strings in FVP DT ([748bdd1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/748bdd19aa27c15438d829bdba42fe4062a265a1)) 518 - fix a VERBOSE trace ([5869ebd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5869ebd0e87f1de987e51994103440fa8c77b26f)) 519 - remove unused memory node ([be42c4b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/be42c4b4bf3c44f2970b7a1658c46b8d5863cad1)) 520 521 - **FPGA** 522 523 - allow build after MAKE_* changes ([9d38a3e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9d38a3e698331e3c8192cc3e0cc8584e6ed987d9)) 524 - avoid re-linking from executable ELF file ([a67ac76](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a67ac7648cd814ed8f8d4ece1b265c6d48c6dc81)) 525 - Change PL011 UART IRQ ([195381a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/195381a91313bc0bce2cfa087f3c55136a9e8496)) 526 - limit BL31 memory usage ([d457230](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d4572303ed45faceffed859955b0e71724fddfd2)) 527 - reserve BL31 memory ([13e16fe](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/13e16fee86451e2f871c2aac757b32299fe5ead6)) 528 - streamline generated axf file ([9177e4f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9177e4fd9356b0f249be8b6fe14f222e10f1e6cd)) 529 - enable AMU extension ([d810e30](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d810e30dd6b47e0725dccbcb42ca0a0c5215ee34)) 530 - increase initrd size ([c3ce73b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c3ce73be0bfe31fa28805fe92b3e727232ffd37a)) 531 532 - **FVP** 533 534 - fix fvp_cpu_standby() function ([3202ce8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3202ce8bbb4af8580736d2a1634ad45c3f89d931)) 535 - spmc optee manifest remove SMC allowlist ([183725b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/183725b39d75e362a32b3c5d0be110c255c56bdd)) 536 - allow changing the kernel DTB load address ([672d669](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/672d669d6c72f92c6b81464d1d421e392bc1aa3e)) 537 - bump BL2 stack size ([d22f1d3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d22f1d358731f0f55f2f392fa587f0fa8d315aa5)) 538 - provide boot files via semihosting ([749d0fa](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/749d0fa80d1c7ca30b4092a381a06deeeaf1747f)) 539 - OP-TEE SP manifest per latest SPMC changes ([b7bc51a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b7bc51a7a747bf40d219b2041e5b3ce56737a71b)) 540 541 - **FVP-R** 542 543 - fix compilation error in release mode ([7d96e79](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7d96e79a1a2efdf85f1ed46cdd5c577b58054f53)) 544 545 - **Morello** 546 547 - initialise CNTFRQ in Non Secure CNTBaseN ([7f2d23d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7f2d23d9d790df90021de6c5165ef10fe5cc5590)) 548 549 - **TC** 550 551 - enable AMU extension ([b5863ca](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b5863cab9adb3fed0c1e4dfb92cf906794e7bdb4)) 552 - change UUID to string format ([1c19536](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1c1953653c20b4a8c61a7deb3fc493d496d8c478)) 553 - remove "arm,psci" from psci node ([814646b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/814646b4cb792ab14df04e28360fefd168399b3c)) 554 - remove ffa and optee device tree node ([f1b44a9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f1b44a9050fbc12e8c260107bfff2930476df062)) 555 - set cactus-tertiary vcpu count to 1 ([05f667f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/05f667f0c670ba9682050714561309f00210c282)) 556 557 - **SGI** 558 559 - avoid redefinition of 'efi_guid' structure ([f34322c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f34322c1cea1e355aeb4133df6aa601d719be5a3)) 560 561 - **Marvell** 562 563 - Check the required libraries before building doimage ([dd47809](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/dd47809e9ea75188060bf8b294efa8578d255c63)) 564 565 - **Armada** 566 567 - select correct pcie reference clock source ([371648e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/371648e1c76b5230bf8e153629064c02086365c9)) 568 - fix MSS loader for A8K family ([dceac43](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/dceac436f620e60cd0149194377871b225216079)) 569 570 - **A3K** 571 572 - disable HANDLE_EA_EL3_FIRST by default ([3017e93](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3017e932768c7357a1a41493c58323419e9a1ec9)) 573 - enable workaround for erratum 1530924 ([975563d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/975563dbfc012b6e8a7765dd8e48220e1bc53dec)) 574 - Fix building uart-images.tgz.bin archive ([d3f8db0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d3f8db07b618e79c05805a1598e5e834e42fea98)) 575 - Fix check for external dependences ([2baf503](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2baf50385ba2b460afef4a7919b13b3a350fd03a)) 576 - fix printing info messages on output ([9f6d154](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9f6d15408340af07ed3c2500202b147189eaa7ef)) 577 - update information about PCIe abort hack ([068fe91](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/068fe919613197bf221c00fb84a1d94c66a7a8ca)) 578 - Remove encryption password ([076374c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/076374c9b97d47b10ba5c6034817866c08d66ed4)) 579 580 - **A8K** 581 582 - Add missing build dependency for BLE target ([04738e6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/04738e69917f8e8790bf4cf83ceb05f85e1f45bb)) 583 - Correctly set include directories for individual targets ([559ab2d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/559ab2df4a35cd82b2a67a0bebeb3028544a6766)) 584 - Require that MV_DDR_PATH is correctly set ([528dafc](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/528dafc367c4f49d4904c4335422502dacf469bf)) 585 - fix number of CPU power switches. ([5cf6faf](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5cf6fafe223da89c60e2323c242ea188b17e98c3)) 586 587 - **MediaTek** 588 589 - **MT8183** 590 591 - fix out-of-bound access ([420c26b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/420c26b33a29c8328a1806ccb2f5a5885041fdfc)) 592 593 - **MT8195** 594 595 - use correct print format for uint64_t ([964ee4e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/964ee4e6be70ef638d6c875a761ab5ca359d84fe)) 596 - fix error setting for SPM ([1f81ccc](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1f81cccedd40cb397813b0fa826ea1d793b02089)) 597 - extend MMU region size ([9ff8b8c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9ff8b8ca9393e31e790eb2c8e7ea5c5f41f45198)) 598 - fix coverity fail ([85e4d14](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/85e4d14df157b5641421ea2b844c146ddc230152)) 599 600 - **NXP** 601 602 - **i.MX** 603 604 - do not keep mmc_device_info in stack ([99d37c8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/99d37c8cb8196a7296311fb4f97f80f086021c74)) 605 606 - **i.MX 8M** 607 608 - **i.MX 8M Mini** 609 610 - fix FTBFS on SPD=opteed ([10bfc77](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/10bfc77e7b3afce17185114ac66361a0914f7784)) 611 612 - **Layerscape** 613 614 - **LX2** 615 616 - **LS1028A** 617 618 - define endianness of scfg and gpio ([2475f63](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2475f63bdec6c24c13f7d6ec7f70275b1bde5c15)) 619 - fix compile error when enable fuse provision ([a0da9c4](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a0da9c4bd296ec1a47683a1ee05f5d1ed71828c7)) 620 621 - **QEMU** 622 623 - (NS_DRAM0_BASE + NS_DRAM0_SIZE) ADDR overflow 32bit ([325716c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/325716c97b7835b8d249f12c1461556bab8c53a0)) 624 - reboot/shutdown with low to high gpio ([bd2ad12](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bd2ad12ef10f558a5b15f5768b66e7b2606c6498)) 625 626 - **QTI** 627 628 - **SC1780** 629 630 - qti smc addition ([cc35a37](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cc35a3771d28a96906f8d0f393ff664924a2d4dc)) 631 632 - **Raspberry Pi** 633 634 - **Raspberry Pi 4** 635 636 - drop /memreserve/ region ([5d2793a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5d2793a61aded9602af86e90a571f64ff07f93b3)) 637 638 - **Renesas** 639 640 - **R-Car** 641 642 - change process that copy code to system ram ([49593cc](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/49593cc1ce0d0471aeef7ca24a5415da2dd55bea)) 643 - fix cache maintenance process of reading cert header ([c77ab18](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c77ab18ec7c8e0f3d953177b835e004a9b53515f)) 644 - fix to load image when option BL2_DCACHE_ENABLE is enabled ([d2ece8d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d2ece8dba2f31091b1fa6c302d4255495bb15705)) 645 646 - **R-Car 3** 647 648 - fix disabling MFIS write protection for R-Car D3 ([a8c0c3e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a8c0c3e9d0df2215ed3b9ef66f4596787d957566)) 649 - fix eMMC boot support for R-Car D3 ([77ab366](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/77ab3661e55c39694c7ee81de2d1615775711b64)) 650 - fix source file to make about GICv2 ([fb3406b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fb3406b6b573cb0b35138ca3c89c5641d3d7b790)) 651 - fix version judgment for R-Car D3 ([c3d192b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c3d192b8e52823dcbc32e21e47c30693d38bb49f)) 652 - generate two memory nodes for larger than 2 GiB channel 0 ([21924f2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/21924f2466b9b5e1243c142932e6f498da5633e9)) 653 654 - **Rockchip** 655 656 - **RK3399** 657 658 - correct LPDDR4 resume sequence ([2c4b0c0](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2c4b0c05c6546e24eb7209ffb3bb465d4feed164)) 659 - fix dram section placement ([f943b7c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f943b7c8e292e3aad2fcbdd0a37505f62b3b4c87)) 660 661 - **Socionext** 662 663 - **Synquacer** 664 665 - update scmi power domain off handling ([f7f5d2c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f7f5d2c4cd209c2d21244da4fa442050eb4531ab)) 666 667 - **ST** 668 669 - add STM32IMAGE_SRC ([f223505](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f22350583c2e26ea291eae3dc54db867fdf0d9af)) 670 - add UART reset in crash console init ([b38e2ed](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b38e2ed29ef791dad0cb61fed81b74d612f58b01)) 671 - apply security at the end of BL2 ([99080bd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/99080bd1273331007f0b2d6f64fed51ac6861bcd)) 672 - correct BSEC error code management ([72c7884](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/72c7884092684af4cc3c49e08f913b3ffed783ba)) 673 - correct IO compensation disabling ([c2d18ca](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c2d18ca80f4bd32f58ba07f53d9bb2586df18fc0)) 674 - correct signedness comparison issue ([5657dec](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5657decc7ffa1376c0a97b6d14ea1428877f5af4)) 675 - improve DDR get size function ([91ffc1d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/91ffc1deffa2c1c64efe4dfaf27b78f2621a8b0b)) 676 - only check header major when booting ([8ce8918](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8ce89187459ec77dd9ffdffba3a2b77838d51b6d)) 677 - panic if boot interface is wrong ([71693a6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/71693a66341e7d9d683ef32981243cb4c4439351)) 678 - remove double space ([306dcd6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/306dcd6b0d1981b75e103c560a4034bdaa6862d5)) 679 680 - **ST32MP1** 681 682 - add bl prefix for internal linker script ([7684ddd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7684dddcfb14c45bad33b091410a0bf14a3a9830)) 683 684 - **Xilinx** 685 686 - **Versal** 687 688 - correct IPI buffer offset ([e1e5b13](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e1e5b1339b9f73f7f1893d8a6d4dfe4b19ba0ad1)) 689 - use sync method for blocking calls ([fa58171](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fa58171534976f94b93a44184afd050d8225e404)) 690 691 - **ZynqMP** 692 693 - use sync method for blocking calls ([c063c5a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c063c5a4f92d5787536e595ca4906b458b0f26cb)) 694 695- **Services** 696 697 - drop warning on unimplemented calls ([67fad51](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/67fad514ee974dcf0252fa0e9219eb3c580eb714)) 698 699 - **RME** 700 701 - fixes a shift by 64 bits bug in the RME GPT library ([322b344](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/322b344e30cb87b9293060d5946b3c17fe3b9133)) 702 703 - **SPM** 704 705 - do not compile if SVE/SME is enabled ([4333f95](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4333f95bedb5f2b53dcb62e0e9c563794ec33c07)) 706 - error macro to use correct print format ([0c23e6f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0c23e6f44d41593b6e7f97594c12b5791bd75189)) 707 - revert workaround hafnium as hypervisor ([3221fce](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3221fce842c0b5aea984bb8dbc1393082bd88a58)) 708 - fixing coverity issue for SPM Core. ([f7fb0bf](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/f7fb0bf77f3434bfb67411cad65e704fdef27f76)) 709 710- **Libraries** 711 712 - **LIBC** 713 714 - use long for 64-bit types on aarch64 ([4ce3e99](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4ce3e99a336b74611349595ea7fd5ed0277c3eeb)) 715 716 - **CPU Support** 717 718 - correct Demeter CPU name ([4cb576a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4cb576a0c5bd2e7669606996a9f79602596df07c)) 719 - workaround for Cortex A78 erratum 2242635 ([1ea9190](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1ea9190c6a4d2299c6dc19adc0bbe93d4f051eff)) 720 - workaround for Cortex-A710 erratum 2058056 ([744bdbf](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/744bdbf732ffd2abf84b2431624051e93bc29f7b)) 721 - workaround for Neoverse V1 erratum 2216392 ([4c8fe6b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4c8fe6b17fa994a630b2a30f8666df103f2e370d)) 722 - workaround for Neoverse-N2 erratum 2138953 ([ef8f0c5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ef8f0c52ddf83e815a029319971682d7a26b6a6f)) 723 - workaround for Neoverse-N2 erratum 2138958 ([c948185](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c948185c973c13df36c62c4bcb50e22b14d6e06a)) 724 - workaround for Neoverse-N2 erratum 2242400 ([603806d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/603806d1376c4b18211fb1d4cc338153de026c32)) 725 - workaround for Neoverse-N2 erratum 2242415 ([5819e23](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5819e23bc47c860872141caf42bddddb1b8679a5)) 726 - workaround for Neoverse-N2 erratum 2280757 ([0d2d999](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0d2d99924e1be548e75c46cfd536f7503cf863e0)) 727 - rename Matterhorn, Matterhorn ELP, and Klein CPUs ([c6ac4df](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c6ac4df622befb5bb42ac136745094e1498c91d8)) 728 729 - **EL3 Runtime** 730 731 - correct CASSERT for pauth ([b4f8d44](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b4f8d44597faf641177134ee08db7c3fcef5aa14)) 732 - fix SVE and AMU extension enablement flags ([68ac5ed](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/68ac5ed0493b24e6a0a178171a47db75a31cc423)) 733 - random typos in tf-a code base ([2e61d68](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2e61d6871cc310e9404fe5cfa10b9828f1c869a7)) 734 - Remove save/restore of EL2 timer registers ([a7cf274](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a7cf2743f3eb487912302aafc748c81bbd1fc603)) 735 736 - **OP-TEE** 737 738 - correct signedness comparison ([21d2be8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/21d2be83a2eabb328071e857e538ced3c8351874)) 739 740 - **GPT** 741 742 - add necessary barriers and remove cache clean ([77612b9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/77612b90acaffc82cea712f4a431c727bbb968ec)) 743 - use correct print format for uint64_t ([2461bd3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/2461bd3a89f7f2cdf4a7302536746733970cfe53)) 744 745 - **Translation Tables** 746 747 - remove always true check in assert ([74d720a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/74d720a026735263d2f290fd05370dad0d4c7219)) 748 749- **Drivers** 750 751 - **Authentication** 752 753 - avoid NV counter upgrade without certificate validation ([a2a5a94](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a2a5a9456969266dc68d5845f31e05be0c3ff2e3)) 754 755 - **CryptoCell-713** 756 757 - fix a build failure with CC-713 library ([e5fbee5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e5fbee5085c682ac3438e6f66c8bdaffb6076fa2)) 758 759 - **MTD** 760 761 - fix MISRA issues and logic improvement ([5130ad1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5130ad14d52a0196422fed8a7d08e25659890b15)) 762 - macronix quad enable bit issue ([c332740](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c3327408eb4b5852c0ed9d8933c35aaa6de34c21)) 763 764 - **NAND** 765 766 - **SPI NAND** 767 768 - check correct manufacturer id ([4490b79](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4490b7963303fbe59b07a66c8498a803eb5c239c)) 769 - check that parameters have been set ([bc453ab](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bc453ab1b2fd4267d34f2b9587f73b8940ee1538)) 770 771 - **SCMI** 772 773 - entry: add weak functions ([b3c8fd5](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b3c8fd5d778144340d289ad4825123106aac4a96)) 774 - smt: fix build for aarch64 ([0e223c6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0e223c6a9e5a2d92cae00fdd16a02a3f8971b114)) 775 - mention "SCMI" in driver initialisation message ([e0baae7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/e0baae7316bfdf3e49e5e158f79eb80cd51fc700)) 776 - relax requirement for exact protocol version ([125868c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/125868c94150f52ff85cdb59aee623ab1f9f259d)) 777 778 - **UFS** 779 780 - add reset before DME_LINKSTARTUP ([905635d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/905635d5e74e3c7b7b2412a673009c8aaabb73e1)) 781 782 - **Arm** 783 784 - **GIC** 785 786 - **GICv3** 787 788 - add dsb in both disable and enable function of gicv3_cpuif ([5a5e0aa](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5a5e0aac398989536dc4be790820af89da3d093a)) 789 790 - **GIC-600AE** 791 792 - fix timeout calculation ([7f322f2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7f322f228e76caa5480f827af0aa6751f00fc1c4)) 793 794 - **TZC** 795 796 - **TZC-400** 797 798 - never disable filter 0 ([ef378d3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ef378d3ec1ef9d7c28baef32ed409688e962542b)) 799 800 - **Marvell** 801 802 - **COMPHY** 803 804 - fix name of 3.125G SerDes mode ([a669983](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a669983c78828e3f4a4f14b9e5a6ee79dcfde20f)) 805 806 - **Armada 3700** 807 808 - configure phy selector also for PCIe ([0f3a122](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0f3a1221093256999af5f2a80e9b3d7231b9f5fb)) 809 - fix address overflow ([c074f70](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c074f70ce5d85e1735b589b323fac99d7eb988b5)) 810 - handle failures in power functions ([49b664e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/49b664e75f43fda08dddef4f0510d346bdd25565)) 811 812 - **CP110** 813 814 - fix error code in pcie power on ([c0a909c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c0a909cdcce2d9a2ceefe672ad2fc1cae7e39ec4)) 815 816 - **Armada** 817 818 - **A3K** 819 820 - **A3720** 821 822 - fix configuring UART clock ([b9185c7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b9185c75f7ec2b600ebe0d49281e216a2456b764)) 823 - fix UART clock rate value and divisor calculation ([66a7752](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/66a7752834382595d26214783ae4698fd1f00bd6)) 824 - fix UART parent clock rate determination ([5a91c43](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5a91c439cbeb1f64b8b9830de91efad5113d3c89)) 825 826 - **MediaTek** 827 828 - **PMIC Wrapper** 829 830 - update idle flow ([9ed4e6f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/9ed4e6fb669b8fcafc4e8acfa6a36db305d27ac8)) 831 832 - **MT8192** 833 834 - **SPM** 835 836 - add missing bit define for debug purpose ([310c3a2](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/310c3a26e17d99aafc73b3504d0b6dfbdb97fd4c)) 837 838 - **NXP** 839 840 - **FLEXSPI** 841 842 - fix warm boot wait time for MT35XU512A ([1ff7e46](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/1ff7e46b092b74891bc2dc7263e4dfae947b2223)) 843 844 - **SCFG** 845 846 - fix endianness checking ([fb90cfd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/fb90cfd4eee504f1d16aa143728af427dc6e0ed8)) 847 848 - **SFP** 849 850 - fix compile warning ([3239a17](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3239a17561c124df7095391c0d64e86910660cdc)) 851 852 - **Renesas** 853 854 - **R-Car3** 855 856 - console: fix a return value of console_rcar_init ([bb273e3](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bb273e3be1c4f1cddeac9ceaac95fb56e41e6b98)) 857 - ddr: update DDR setting for H3, M3, M3N ([ec767c1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ec767c1b99675fbb50ef1b2fdb2d38e881e4789d)) 858 - emmc: remove CPG_CPGWPR redefinition ([36d5645](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/36d5645aec947ab00b925b21141e59e58e1efd8c)) 859 - fix CPG registers redefinition ([0dae56b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0dae56bb2f0aa1f89ec98ebe3931fb19751a5c72)) 860 - i2c_dvfs: fix I2C operation ([b757d3a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b757d3a1d901bee9b7ad430702575adba04889ba)) 861 862 - **ST** 863 864 - **Clock** 865 866 - use correct return value ([8f97c4f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8f97c4fab1769b3f7f37a2a7a01ade36e5c94eaa)) 867 - correctly manage RTC clock source ([1550909](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/15509093f0ba9a10f97c6f92bc3bb9fcf79a48ce)) 868 - fix MCU/AXI parent clock ([b8fe48b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/b8fe48b6f2b07fce49363cb3c0f8dac9e286439b)) 869 - fix MPU clock rate ([602ae2f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/602ae2f23c2bc9d79a9ab2b7c5dde1932fffc984)) 870 - fix RTC clock rating ([cbd2e8a](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cbd2e8a6afdd05c4b404d7998134a3f60cc15518)) 871 - keep RTC clock always on ([5b111c7](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/5b111c74795ea5e9c8a12d0e6b18d77e431311ed)) 872 - keep RTCAPB clock always on ([373f06b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/373f06be4ee1114369b96763481b58885623aea4)) 873 - set other clocks as always on ([bf39318](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/bf39318d93c270ff72bda4b46e4771aba7aea313)) 874 875 - **I/O** 876 877 - **STM32 Image** 878 879 - invalidate cache on local buf ([a5bcf82](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a5bcf82402ff415326b4dba42aae95c499821e94)) 880 - uninitialized variable warning ([c1d732d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c1d732d0db2463998036c678619007da79a25b3f)) 881 882 - **ST PMIC** 883 884 - initialize i2c_state ([4282284](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/42822844bfed2e9ffaeae850cc60f5c3d4d9d654)) 885 - missing error check ([a4bcfe9](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a4bcfe94e73db89ce2ebbb23c8e33e51eea5026a)) 886 887 - **STPMIC1** 888 889 - fix power switches activation ([0161991](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0161991184e5feacacc679bdb9c92681b85235eb)) 890 - update error cases return ([ed6a852](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/ed6a85234653c5ee2520389b769ff47e321df8a4)) 891 892 - **UART** 893 894 - **STM32 Console** 895 896 - do not skip init for crash console ([49c7f0c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/49c7f0cef4cc864185828750f1f61f3f33f284f7)) 897 898 - **USB** 899 900 - add a optional ops get_other_speed_config_desc ([216c122](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/216c1223c2c65bd1c119a28b9406f70a9ee7b063)) 901 - fix Null pointer dereferences in usb_core_set_config ([0cb9870](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0cb9870ddfa1b2fec50debe6d6333cbcb3df1e7e)) 902 - remove deadcode when USBD_EP_NB = 1 ([7ca4928](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7ca49284be083b03ae11aa348b40358876ee5d4b)) 903 - remove unnecessary cast ([025f5ef](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/025f5ef201a39ba7285f368139e690bbd7a44653)) 904 905- **Miscellaneous** 906 907 - use correct printf format for uint64_t ([4ef449c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4ef449c15a4055d92632cb7e72267f525a7e2fca)) 908 909 - **DT Bindings** 910 911 - fix static checks ([0861fcd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/0861fcdd3e3f2625e133de3dae9c548de7c1ee48)) 912 913 - **FDTs** 914 915 - avoid output on missing DT property ([49e789e](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/49e789e353efaf97f84eca016c6a1b8a2b3e3d98)) 916 - fix OOB write in uuid parsing function ([d0d6424](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d0d642450f1f3a0f43e0e156ef57a0c460dd48cf)) 917 918 - **Morello** 919 920 - fix scmi clock specifier to cluster mappings ([387a906](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/387a9065a271ecde0e47dc5a9f9d037637502beb)) 921 922 - **STM32MP1** 923 924 - correct copyright dates ([8d26029](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8d26029168fe70a86de524ed68c56e8666823714)) 925 - set ETH clock on PLL4P on ST boards ([3e881a8](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/3e881a8834a955f1e552300bdbf1dafd02ea8f1c)) 926 - update PLL nodes for ED1/EV1 boards ([cdbbb9f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/cdbbb9f7ecd4687fa52e1c655b631377c24862b9)) 927 - use 'kHz' as kilohertz abbreviation ([4955d08](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/4955d08de7aa664387d2e5f690e78b85ac23a402)) 928 929 - **PIE** 930 931 - invalidate data cache in the entire image range if PIE is enabled ([596d20d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/596d20d9e4d50c02b5a0cce8cad2a1c205cd687a)) 932 933 - **Security** 934 935 - Set MDCR_EL3.MCCD bit ([12f6c06](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/12f6c0649732a35a7ed45ba350a963f09a5710ca)) 936 937 - **SDEI** 938 939 - fix assert while kdump issue ([d39db26](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d39db2695ba626b9c0ee38652fe160b4e84b15d9)) 940 - print event number in hex format ([6b94356](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6b94356b577744d425476a029c47bd35eb13c148)) 941 - set SPSR for SDEI based on TakeException ([37596fc](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/37596fcb43e34ed4bcf1bd3e86d8dec1011edab8)) 942 943- **Documentation** 944 945 - fix TF-A v2.6 release date in the release information page ([c90fa47](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/c90fa47202b762fe8f54e9c0561e94d37907b6ad)) 946 - fix `FF-A` substitution ([a61940c](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/a61940ca739eb89be7c1bb2408a9178c2da5cb70)) 947 - fix typos in v2.5 release documentation ([481c7b6](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/481c7b6b9107a3f71ee750f89cacdd8f9c729838)) 948 - remove "experimental" tag for stable features ([700e768](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/700e7685dd4682a929645a79de39f503c9140b2d)) 949 950 - **Contribution Guidelines** 951 952 - fix formatting for code snippet ([d0bbe81](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/d0bbe8150eb35fe2bac1567751bf84a8f073dd39)) 953 954- **Build System** 955 956 - use space in WARNINGS list ([34b508b](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/34b508be9f021831423a8a14f56dff547e24c743)) 957 958 - **Git Hooks** 959 960 - downgrade `package-lock.json` version ([7434b65](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/7434b65208175bdf3f44e0e62aaaeabc9c494ee3)) 961 962- **Tools** 963 964 - **STM32 Image** 965 966 - improve the tool ([8d0036d](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/8d0036d3d8c8ac1524539ea90382acafb1e524c0)) 967 968 - **SPTOOL** 969 970 - SP UUID little to big endian in TF-A build ([dcdbcdd](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/dcdbcddebdee8d4d2c6c8316f615b428758b22ac)) 971 972 - **DOIMAGE** 973 974 - Fix doimage syntax breaking secure mode build ([6d55ef1](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/6d55ef1a24dc92a3b737aaa02141f550caaace06)) 975 976- **Dependencies** 977 978 - **checkpatch** 979 980 - do not check merge commits ([77a0a7f](https://review.trustedfirmware.org/plugins/gitiles/TF-A/trusted-firmware-a/+/77a0a7f1d96b188849d1d8d8884b3c93857d3f69)) 981 982## 2.5.0 (2021-05-17) 983 984### New Features 985 986- Architecture support 987 988 - Added support for speculation barrier(`FEAT_SB`) for non-Armv8.5 platforms 989 starting from Armv8.0 990 - Added support for Activity Monitors Extension version 1.1(`FEAT_AMUv1p1`) 991 - Added helper functions for Random number generator(`FEAT_RNG`) registers 992 - Added support for Armv8.6 Multi-threaded PMU extensions (`FEAT_MTPMU`) 993 - Added support for MTE Asymmetric Fault Handling extensions(`FEAT_MTE3`) 994 - Added support for Privileged Access Never extensions(`FEAT_PANx`) 995 996- Bootloader images 997 998 - Added PIE support for AArch32 builds 999 - Enable Trusted Random Number Generator service for BL32(sp_min) 1000 1001- Build System 1002 1003 - Added build option for Arm Feature Modifiers 1004 1005- Drivers 1006 1007 - Added support for interrupts in TZC-400 driver 1008 - Broadcom 1009 - Added support for I2C, MDIO and USB drivers 1010 - Marvell 1011 - Added support for secure read/write of dfc register-set 1012 - Added support for thermal sensor driver 1013 - Implement a3700_core_getc API in console driver 1014 - Added rx training on 10G port 1015 - Marvell Mochi 1016 - Added support for cn913x in PCIe mode 1017 - Marvell Armada A8K 1018 - Added support for TRNG-IP-76 driver and accessing RNG register 1019 - Mediatek MT8192 1020 - Added support for following drivers 1021 - MPU configuration for SCP/PCIe 1022 - SPM suspend 1023 - Vcore DVFS 1024 - LPM 1025 - PTP3 1026 - UART save and restore 1027 - Power-off 1028 - PMIC 1029 - CPU hotplug and MCDI support 1030 - SPMC 1031 - MPU 1032 - Mediatek MT8195 1033 - Added support for following drivers 1034 - GPIO, NCDI, SPMC drivers 1035 - Power-off 1036 - CPU hotplug, reboot and MCDI 1037 - Delay timer and sys timer 1038 - GIC 1039 - NXP 1040 - Added support for 1041 - non-volatile storage API 1042 - chain of trust and trusted board boot using two modes: MBEDTLS and CSF 1043 - fip-handler necessary for DDR initialization 1044 - SMMU and console drivers 1045 - crypto hardware accelerator driver 1046 - following drivers: SD, EMMC, QSPI, FLEXSPI, GPIO, GIC, CSU, PMU, DDR 1047 - NXP Security Monitor and SFP driver 1048 - interconnect config APIs using ARM CCN-CCI driver 1049 - TZC APIs to configure DDR region 1050 - generic timer driver 1051 - Device configuration driver 1052 - IMX 1053 - Added support for image loading and io-storage driver for TBBR fip booting 1054 - Renesas 1055 - Added support for PFC and EMMC driver 1056 - RZ Family: 1057 - G2N, G2E and G2H SoCs 1058 - Added support for watchdog, QoS, PFC and DRAM initialization 1059 - RZG Family: 1060 - G2M 1061 - Added support for QoS and DRAM initialization 1062 - Xilinx 1063 - Added JTAG DCC support for Versal and ZynqMP SoC family. 1064 1065- Libraries 1066 1067 - C standard library 1068 - Added support to print `%` in `snprintf()` and `printf()` APIs 1069 - Added support for strtoull, strtoll, strtoul, strtol APIs from FreeBSD 1070 project 1071 - CPU support 1072 - Added support for 1073 - Cortex_A78C CPU 1074 - Makalu ELP CPU 1075 - Makalu CPU 1076 - Matterhorn ELP CPU 1077 - Neoverse-N2 CPU 1078 - CPU Errata 1079 - Arm Cortex-A76: Added workaround for erratum 1946160 1080 - Arm Cortex-A77: Added workaround for erratum 1946167 1081 - Arm Cortex-A78: Added workaround for erratum 1941498 and 1951500 1082 - Arm Neoverse-N1: Added workaround for erratum 1946160 1083 - Flattened device tree(libfdt) 1084 - Added support for wrapper function to read UUIDs in string format from dtb 1085 1086- Platforms 1087 1088 - Added support for MediaTek MT8195 1089 - Added support for Arm RD-N2 board 1090 - Allwinner 1091 - Added support for H616 SoC 1092 - Arm 1093 - Added support for GPT parser 1094 - Protect GICR frames for fused/unused cores 1095 - Arm Morello 1096 - Added VirtIO network device to Morello FVP fdts 1097 - Arm RD-N2 1098 - Added support for variant 1 of RD-N2 platform 1099 - Enable AMU support 1100 - Arm RD-V1 1101 - Enable AMU support 1102 - Arm SGI 1103 - Added support for platform variant build option 1104 - Arm TC0 1105 - Added Matterhorn ELP CPU support 1106 - Added support for opteed 1107 - Arm Juno 1108 - Added support to use hw_config in BL31 1109 - Use TRNG entropy source for SMCCC TRNG interface 1110 - Condition Juno entropy source with CRC instructions 1111 - Marvell Mochi 1112 - Added support for detection of secure mode 1113 - Marvell ARMADA 1114 - Added support for new compile option A3720_DB_PM_WAKEUP_SRC 1115 - Added support doing system reset via CM3 secure coprocessor 1116 - Made several makefile enhancements required to build WTMI_MULTI_IMG and 1117 TIMDDRTOOL 1118 - Added support for building DOIMAGETOOL tool 1119 - Added new target mrvl_bootimage 1120 - Mediatek MT8192 1121 - Added support for rtc power off sequence 1122 - Mediatek MT8195 1123 - Added support for SiP service 1124 - STM32MP1 1125 - Added support for 1126 - Seeed ODYSSEY SoM and board 1127 - SDMMC2 and I2C2 pins in pinctrl 1128 - I2C2 peripheral in DTS 1129 - PIE for BL32 1130 - TZC-400 interrupt managament 1131 - Linux Automation MC-1 board 1132 - Renesas RZG 1133 - Added support for identifying EK874 RZ/G2E board 1134 - Added support for identifying HopeRun HiHope RZ/G2H and RZ/G2H boards 1135 - Rockchip 1136 - Added support for stack protector 1137 - QEMU 1138 - Added support for `max` CPU 1139 - Added Cortex-A72 support to `virt` platform 1140 - Enabled trigger reboot from secure pl061 1141 - QEMU SBSA 1142 - Added support for sbsa-ref Embedded Controller 1143 - NXP 1144 - Added support for warm reset to retain ddr content 1145 - Added support for image loader necessary for loading fip image 1146 - lx2160a SoC Family 1147 - Added support for 1148 - new platform lx2160a-aqds 1149 - new platform lx2160a-rdb 1150 - new platform lx2162a-aqds 1151 - errata handling 1152 - IMX imx8mm 1153 - Added support for trusted board boot 1154 - TI K3 1155 - Added support for lite device board 1156 - Enabled Cortex-A72 erratum 1319367 1157 - Enabled Cortex-A53 erratum 1530924 1158 - Xilinx ZynqMP 1159 - Added support for PS and system reset on WDT restart 1160 - Added support for error management 1161 - Enable support for log messages necessary for debug 1162 - Added support for PM API SMC call for efuse and register access 1163 1164- Processes 1165 1166 - Introduced process for platform deprecation 1167 - Added documentation for TF-A threat model 1168 - Provided a copy of the MIT license to comply with the license requirements 1169 of the arm-gic.h source file (originating from the Linux kernel project and 1170 re-distributed in TF-A). 1171 1172- Services 1173 1174 - Added support for TRNG firmware interface service 1175 - Arm 1176 - Added SiP service to configure Ethos-N NPU 1177 - SPMC 1178 - Added documentation for SPM(Hafnium) SMMUv3 driver 1179 - SPMD 1180 - Added support for 1181 - FFA_INTERRUPT forwading ABI 1182 - FFA_SECONDARY_EP_REGISTER ABI 1183 - FF-A v1.0 boot time power management, SPMC secondary core boot and early 1184 run-time power management 1185 1186- Tools 1187 1188 - FIPTool 1189 - Added mechanism to allow platform specific image UUID 1190 - git hooks 1191 - Added support for conventional commits through commitlint hook, commitizen 1192 hook and husky configuration files. 1193 - NXP tool 1194 - Added support for a tool that creates pbl file from BL2 1195 - Renesas RZ/G2 1196 - Added tool support for creating bootparam and cert_header images 1197 - CertCreate 1198 - Added support for platform-defined certificates, keys, and extensions 1199 using the platform's makefile 1200 - shared tools 1201 - Added EFI_GUID representation to uuid helper data structure 1202 1203### Changed 1204 1205- Common components 1206 1207 - Print newline after hex address in aarch64 el3_panic function 1208 - Use proper `#address-cells` and `#size-cells` for reserved-memory in dtbs 1209 1210- Drivers 1211 1212 - Move SCMI driver from ST platform directory and make it common to all 1213 platforms 1214 - Arm GICv3 1215 - Shift eSPI register offset in GICD_OFFSET_64() 1216 - Use mpidr to probe GICR for current CPU 1217 - Arm TZC-400 1218 - Adjust filter tag if it set to FILTER_BIT_ALL 1219 - Cadence 1220 - Enhance UART driver APIs to put characters to fifo 1221 - Mediatek MT8192 1222 - Move timer driver to common folder 1223 - Enhanced sys_cirq driver to add more IC services 1224 - Renesas 1225 - Move ddr and delay driver to common directory 1226 - Renesas rcar 1227 - Treat log as device memory in console driver 1228 - Renesas RZ Family: 1229 - G2N and G2H SoCs 1230 - Select MMC_CH1 for eMMC channel 1231 - Marvell 1232 - Added support for checking if TRNG unit is present 1233 - Marvell A3K 1234 - Set TXDCLK_2X_SEL bit during PCIe initialization 1235 - Set mask parameter for every reg_set call 1236 - Marvell Mochi 1237 - Added missing stream IDs configurations 1238 - MbedTLS 1239 - Migrated to Mbed TLS v2.26.0 1240 - IMX imx8mp 1241 - Change the bl31 physical load address 1242 - QEMU SBSA 1243 - Enable secure variable storage 1244 - SCMI 1245 - Update power domain protocol version to 2.0 1246 - STM32 1247 - Remove dead code from nand FMC driver 1248 1249- Libraries 1250 1251 - C Standard Library 1252 - Use macros to reduce duplicated code between snprintf and printf 1253 - CPU support 1254 - Sanity check pointers before use in AArch32 builds 1255 - Arm Cortex-A78 1256 - Remove rainier cpu workaround for errata 1542319 1257 - Arm Makalu ELP 1258 - Added "\_arm" suffix to Makalu ELP CPU lib 1259 1260- Miscellaneous 1261 1262 - Editorconfig 1263 - set max line length to 100 1264 1265- Platforms 1266 1267 - Allwinner 1268 - Added reserved-memory node to DT 1269 - Express memmap more dynamically 1270 - Move SEPARATE_NOBITS_REGION to platforms 1271 - Limit FDT checks to reduce code size 1272 - Use CPUIDLE hardware when available 1273 - Allow conditional compilation of SCPI and native PSCI ops 1274 - Always use a 3MHz RSB bus clock 1275 - Enable workaround for Cortex-A53 erratum 1530924 1276 - Fixed non-default PRELOADED_BL33_BASE 1277 - Leave CPU power alone during BL31 setup 1278 - Added several psci hooks enhancements to improve system shutdown/reset 1279 sequence 1280 - Return the PMIC to I2C mode after use 1281 - Separate code to power off self and other CPUs 1282 - Split native and SCPI-based PSCI implementations 1283 - Allwinner H6 1284 - Added R_PRCM security setup for H6 board 1285 - Added SPC security setup for H6 board 1286 - Use RSB for the PMIC connection on H6 1287 - Arm 1288 - Store UUID as a string, rather than ints 1289 - Replace FIP base and size macro with a generic name 1290 - Move compile time switch from source to dt file 1291 - Don't provide NT_FW_CONFIG when booting hafnium 1292 - Do not setup 'disabled' regulator 1293 - Increase SP max size 1294 - Remove false dependency of ARM_LINUX_KERNEL_AS_BL33 on RESET_TO_BL31 and 1295 allow it to be enabled independently 1296 - Arm FVP 1297 - Do not map GIC region in BL1 and BL2 1298 - Arm Juno 1299 - Refactor juno_getentropy() to return 64 bits on each call 1300 - Arm Morello 1301 - Remove "virtio-rng" from Morello FVP 1302 - Enable virtIO P9 device for Morello fvp 1303 - Arm RDV1 1304 - Allow all PSCI callbacks on RD-V1 1305 - Rename rddaniel to rdv1 1306 - Arm RDV1MC 1307 - Rename rddanielxlr to rdv1mc 1308 - Initialize TZC-400 controllers 1309 - Arm TC0 1310 - Updated GICR base address 1311 - Use scmi_dvfs clock index 1 for cores 4-7 through fdt 1312 - Added reserved-memory node for OP-TEE fdts 1313 - Enabled Theodul DSU in TC platform 1314 - OP-TEE as S-EL1 SP with SPMC at S-EL2 1315 - Update Matterhorm ELP DVFS clock index 1316 - Arm SGI 1317 - Allow access to TZC controller on all chips 1318 - Define memory regions for multi-chip platforms 1319 - Allow access to nor2 flash and system registers from S-EL0 1320 - Define default list of memory regions for DMC-620 TZC 1321 - Improve macros defining cper buffer memory region 1322 - Refactor DMC-620 error handling SMC function id 1323 - Refactor SDEI specific macros 1324 - Added platform id value for RDN2 platform 1325 - Refactored header file inclusions and inclusion of memory mapping 1326 - Arm RDN2 1327 - Allow usage of secure partitions on RDN2 platform 1328 - Update GIC redistributor and TZC base address 1329 - Arm SGM775 1330 - Deprecate Arm sgm775 FVP platform 1331 - Marvell 1332 - Increase TX FIFO EMPTY timeout from 2ms to 3ms 1333 - Update delay code to be compatible with 1200 MHz CPU 1334 - Marvell ARMADA 1335 - Postpone MSS CPU startup to BL31 stage 1336 - Allow builds without MSS support 1337 - Use MSS SRAM in secure mode 1338 - Added missing FORCE, .PHONY and clean targets 1339 - Cleanup MSS SRAM if used for copy 1340 - Move definition of mrvl_flash target to common marvell_common.mk file 1341 - Show informative build messages and blank lines 1342 - Marvell ARMADA A3K 1343 - Added a new target mrvl_uart which builds UART image 1344 - Added checks that WTP, MV_DDR_PATH and CRYPTOPP_PATH are correctly defined 1345 - Allow use of the system Crypto++ library 1346 - Build \$(WTMI_ENC_IMG) in \$(BUILD_PLAT) directory 1347 - Build intermediate files in \$(BUILD_PLAT) directory 1348 - Build UART image files directly in \$(BUILD_UART) subdirectory 1349 - Correctly set DDR_TOPOLOGY and CLOCKSPRESET for WTMI 1350 - Do not use 'echo -e' in Makefile 1351 - Improve 4GB DRAM usage from 3.375 GB to 3.75 GB 1352 - Remove unused variable WTMI_SYSINIT_IMG from Makefile 1353 - Simplify check if WTP variable is defined 1354 - Split building \$(WTMI_MULTI_IMG) and \$(TIMDDRTOOL) 1355 - Marvell ARMADA A8K 1356 - Allow CP1/CP2 mapping at BLE stage 1357 - Mediatek MT8183 1358 - Added timer V20 compensation 1359 - Nvidia Tegra 1360 - Rename SMC API 1361 - TI K3 1362 - Make plat_get_syscnt_freq2 helper check CNT_FID0 register 1363 - Fill non-message data fields in sec_proxy with 0x0 1364 - Update ti_sci_msg_req_reboot ABI to include domain 1365 - Enable USE_COHERENT_MEM only for the generic board 1366 - Explicitly map SEC_SRAM_BASE to 0x0 1367 - Use BL31_SIZE instead of computing 1368 - Define the correct number of max table entries and increase SRAM size to 1369 account for additional table 1370 - Raspberry Pi4 1371 - Switch to gicv2.mk and GICV2_SOURCES 1372 - Renesas 1373 - Move headers and assembly files to common folder 1374 - Renesas rzg 1375 - Added device tree memory node enhancements 1376 - Rockchip 1377 - Switch to using common gicv3.mk 1378 - STM32MP1 1379 - Set BL sizes regardless of flags 1380 - QEMU 1381 - Include gicv2.mk for compiling GICv2 source files 1382 - Change DEVICE2 definition for MMU 1383 - Added helper to calculate the position shift from MPIDR 1384 - QEMU SBSA 1385 - Include libraries for Cortex-A72 1386 - Increase SHARED_RAM_SIZE 1387 - Addes support in spm_mm for upto 512 cores 1388 - Added support for topology handling 1389 - QTI 1390 - Mandate SMC implementation 1391 - Xilinx 1392 - Rename the IPI CRC checksum macro 1393 - Use fno-jump-tables flag in CPPFLAGS 1394 - Xilinx versal 1395 - Added the IPI CRC checksum macro support 1396 - Mark IPI calls secure/non-secure 1397 - Enable sgi to communicate with linux using IPI 1398 - Remove Cortex-A53 compilation 1399 - Xilinx ZynqMP 1400 - Configure counter frequency during initialization 1401 - Filter errors related to clock gate permissions 1402 - Implement pinctrl request/release EEMI API 1403 - Reimplement pinctrl get/set config parameter EEMI API calls 1404 - Reimplement pinctrl set/get function EEMI API 1405 - Update error codes to match Linux and PMU Firmware 1406 - Update PM version and support PM version check 1407 - Update return type in query functions 1408 - Added missing ids for 43/46/47dr devices 1409 - Checked for DLL status before doing reset 1410 - Disable ITAPDLYENA bit for zero ITAP delay 1411 - Include GICv2 makefile 1412 - Remove the custom crash implementation 1413 1414- Services 1415 1416 - SPMD 1417 - Lock the g_spmd_pm structure 1418 - Declare third cactus instance as UP SP 1419 - Provide number of vCPUs and VM size for first SP 1420 - Remove `chosen` node from SPMC manifests 1421 - Move OP-TEE SP manifest DTS to FVP platform 1422 - Update OP-TEE SP manifest with device-regions node 1423 - Remove device-memory node from SPMC manifests 1424 - SPM_MM 1425 - Use sp_boot_info to set SP context 1426 - SDEI 1427 - Updata the affinity of shared event 1428 1429- Tools 1430 1431 - FIPtool 1432 - Do not print duplicate verbose lines about building fiptool 1433 - CertCreate 1434 - Updated tool for platform defined certs, keys & extensions 1435 - Create only requested certificates 1436 - Avoid duplicates in extension stack 1437 1438### Resolved Issues 1439 1440- Several fixes for typos and mis-spellings in documentation 1441 1442- Build system 1443 1444 - Fixed \$\{FIP_NAME} to be rebuilt only when needed in Makefile 1445 - Do not mark file targets as .PHONY target in Makefile 1446 1447- Drivers 1448 1449 - Authorization 1450 - Avoid NV counter upgrade without certificate validation 1451 - Arm GICv3 1452 - Fixed logical issue for num_eints 1453 - Limit SPI ID to avoid misjudgement in GICD_OFFSET() 1454 - Fixed potential GICD context override with ESPI enabled 1455 - Marvell A3700 1456 - Fixed configuring polarity invert bits 1457 - Arm TZC-400 1458 - Correct FAIL_CONTROL Privileged bit 1459 - Fixed logical error in FILTER_BIT definitions 1460 - Renesas rcar 1461 - Fixed several coding style violations reported by checkpatch 1462 1463- Libraries 1464 1465 - Arch helpers 1466 - Fixed assertions in processing dynamic relocations for AArch64 builds 1467 - C standard library 1468 - Fixed MISRA issues in memset() ABI 1469 - RAS 1470 - Fixed bug of binary search in RAS interrupt handler 1471 1472- Platforms 1473 1474 - Arm 1475 - Fixed missing copyrights in arm-gic.h file 1476 - Fixed the order of header files in several dts files 1477 - Fixed error message printing in board makefile 1478 - Fixed bug of overriding the last node in image load helper API 1479 - Fixed stdout-path in fdts files of TC0 and N1SDP platforms 1480 - Turn ON/OFF redistributor in sync with GIC CPU interface ON/OFF for css 1481 platforms 1482 - Arm FVP 1483 - Fixed Generic Timer interrupt types in platform dts files 1484 - Arm Juno 1485 - Fixed parallel build issue for romlib config 1486 - Arm SGI 1487 - Fixed bug in SDEI receive event of RAS handler 1488 - Intel Agilex 1489 - Fixed PLAT_MAX_PWR_LVL value 1490 - Marvell 1491 - Fixed SPD handling in dram port 1492 - Marvell ARMADA 1493 - Fixed TRNG return SMC handling 1494 - Fixed the logic used for LD selector mask 1495 - Fixed MSS firmware loader for A8K family 1496 - ST 1497 - Fixed few violations reported by coverity static checks 1498 - STM32MP1 1499 - Fixed SELFREF_TO_X32 mask in ddr driver 1500 - Do not keep mmc_device_info in stack 1501 - Correct plat_crash_console_flush() 1502 - QEMU SBSA 1503 - Fixed memory type of secure NOR flash 1504 - QTI 1505 - Fixed NUM_APID and REG_APID_MAP() argument in SPMI driver 1506 - Intel 1507 - Do not keep mmc_device_info in stack 1508 - Hisilicon 1509 - Do not keep mmc_device_info in stack 1510 1511- Services 1512 1513 - EL3 runtime 1514 - Fixed the EL2 context save/restore routine by removing EL2 generic timer 1515 system registers 1516 - Added fix for exception handler in BL31 by synchronizing pending EA using 1517 DSB barrier 1518 - SPMD 1519 - Fixed error codes to use int32_t type 1520 - TSPD 1521 - Added bug fix in tspd interrupt handling when TSP_NS_INTR_ASYNC_PREEMPT is 1522 enabled 1523 - TRNG 1524 - Fixed compilation errors with -O0 compile option 1525 - DebugFS 1526 - Checked channel index before calling clone function 1527 - PSCI 1528 - Fixed limit of 256 CPUs caused by cast to unsigned char 1529 - TSP 1530 - Fixed compilation erros when built with GCC 11.0.0 toolchain 1531 1532- Tools 1533 1534 - FIPtool 1535 - Do not call `make clean` for `all` target 1536 - CertCreate 1537 - Fixed bug to avoid cleaning when building the binary 1538 - Used preallocated parts of the HASH struct to avoid leaking HASH struct 1539 fields 1540 - Free arguments copied with strdup 1541 - Free keys after use 1542 - Free X509_EXTENSION structures on stack to avoid leaking them 1543 - Optimized the code to avoid unnecessary attempts to create non-requested 1544 certificates 1545 1546## 2.4.0 (2020-11-17) 1547 1548### New Features 1549 1550- Architecture support 1551 - Armv8.6-A 1552 - Added support for Armv8.6 Enhanced Counter Virtualization (ECV) 1553 - Added support for Armv8.6 Fine Grained Traps (FGT) 1554 - Added support for Armv8.6 WFE trap delays 1555- Bootloader images 1556 - Added support for Measured Boot 1557- Build System 1558 - Added build option `COT_DESC_IN_DTB` to create Chain of Trust at runtime 1559 - Added build option `OPENSSL_DIR` to direct tools to OpenSSL libraries 1560 - Added build option `RAS_TRAP_LOWER_EL_ERR_ACCESS` to enable trapping RAS 1561 register accesses from EL1/EL2 to EL3 1562 - Extended build option `BRANCH_PROTECTION` to support branch target 1563 identification 1564- Common components 1565 - Added support for exporting CPU nodes to the device tree 1566 - Added support for single and dual-root Chains of Trust in secure partitions 1567- Drivers 1568 - Added Broadcom RNG driver 1569 - Added Marvell `mg_conf_cm3` driver 1570 - Added System Control and Management Interface (SCMI) driver 1571 - Added STMicroelectronics ETZPC driver 1572 - Arm GICv3 1573 - Added support for detecting topology at runtime 1574 - Dual Root 1575 - Added support for platform certificates 1576 - Marvell Cache LLC 1577 - Added support for mapping the entire LLC into SRAM 1578 - Marvell CCU 1579 - Added workaround for erratum 3033912 1580 - Marvell CP110 COMPHY 1581 - Added support for SATA COMPHY polarity inversion 1582 - Added support for USB COMPHY polarity inversion 1583 - Added workaround for erratum IPCE_COMPHY-1353 1584 - STM32MP1 Clocks 1585 - Added `RTC` as a gateable clock 1586 - Added support for shifted clock selector bit masks 1587 - Added support for using additional clocks as parents 1588- Libraries 1589 - C standard library 1590 - Added support for hexadecimal and pointer format specifiers in `snprint()` 1591 - Added assembly alternatives for various library functions 1592 - CPU support 1593 - Arm Cortex-A53 1594 - Added workaround for erratum 1530924 1595 - Arm Cortex-A55 1596 - Added workaround for erratum 1530923 1597 - Arm Cortex-A57 1598 - Added workaround for erratum 1319537 1599 - Arm Cortex-A76 1600 - Added workaround for erratum 1165522 1601 - Added workaround for erratum 1791580 1602 - Added workaround for erratum 1868343 1603 - Arm Cortex-A72 1604 - Added workaround for erratum 1319367 1605 - Arm Cortex-A77 1606 - Added workaround for erratum 1508412 1607 - Added workaround for erratum 1800714 1608 - Added workaround for erratum 1925769 1609 - Arm Neoverse-N1 1610 - Added workaround for erratum 1868343 1611 - EL3 Runtime 1612 - Added support for saving/restoring registers related to nested 1613 virtualization in EL2 context switches if the architecture supports it 1614 - FCONF 1615 - Added support for Measured Boot 1616 - Added support for populating Chain of Trust properties 1617 - Added support for loading the `fw_config` image 1618 - Measured Boot 1619 - Added support for event logging 1620- Platforms 1621 - Added support for Arm Morello 1622 - Added support for Arm TC0 1623 - Added support for iEi PUZZLE-M801 1624 - Added support for Marvell OCTEON TX2 T9130 1625 - Added support for MediaTek MT8192 1626 - Added support for NXP i.MX 8M Nano 1627 - Added support for NXP i.MX 8M Plus 1628 - Added support for QTI CHIP SC7180 1629 - Added support for STM32MP151F 1630 - Added support for STM32MP153F 1631 - Added support for STM32MP157F 1632 - Added support for STM32MP151D 1633 - Added support for STM32MP153D 1634 - Added support for STM32MP157D 1635 - Arm 1636 - Added support for platform-owned SPs 1637 - Added support for resetting to BL31 1638 - Arm FPGA 1639 - Added support for Klein 1640 - Added support for Matterhorn 1641 - Added support for additional CPU clusters 1642 - Arm FVP 1643 - Added support for performing SDEI platform setup at runtime 1644 - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command 1645 - Added an `id` field under the NV-counter node in the device tree to 1646 differentiate between trusted and non-trusted NV-counters 1647 - Added support for extracting the clock frequency from the timer node in 1648 the device tree 1649 - Arm Juno 1650 - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command 1651 - Arm N1SDP 1652 - Added support for cross-chip PCI-e 1653 - Marvell 1654 - Added support for AVS reduction 1655 - Marvell ARMADA 1656 - Added support for twin-die combined memory device 1657 - Marvell ARMADA A8K 1658 - Added support for DDR with 32-bit bus width (both ECC and non-ECC) 1659 - Marvell AP806 1660 - Added workaround for erratum FE-4265711 1661 - Marvell AP807 1662 - Added workaround for erratum 3033912 1663 - Nvidia Tegra 1664 - Added debug printouts indicating SC7 entry sequence completion 1665 - Added support for SDEI 1666 - Added support for stack protection 1667 - Added support for GICv3 1668 - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command 1669 - Nvidia Tegra194 1670 - Added support for RAS exception handling 1671 - Added support for SPM 1672 - NXP i.MX 1673 - Added support for SDEI 1674 - QEMU SBSA 1675 - Added support for the Secure Partition Manager 1676 - QTI 1677 - Added RNG driver 1678 - Added SPMI PMIC arbitrator driver 1679 - Added support for SMCCC's `SMCCC_ARCH_SOC_ID` command 1680 - STM32MP1 1681 - Added support for exposing peripheral interfaces to the non-secure world 1682 at runtime 1683 - Added support for SCMI clock and reset services 1684 - Added support for STM32MP15x CPU revision Z 1685 - Added support for SMCCC services in `SP_MIN` 1686- Services 1687 - Secure Payload Dispatcher 1688 - Added a provision to allow clients to retrieve the service UUID 1689 - SPMC 1690 - Added secondary core endpoint information to the SPMC context structure 1691 - SPMD 1692 - Added support for booting OP-TEE as a guest S-EL1 Secure Partition on top 1693 of Hafnium in S-EL2 1694 - Added a provision for handling SPMC messages to register secondary core 1695 entry points 1696 - Added support for power management operations 1697- Tools 1698 - CertCreate 1699 - Added support for secure partitions 1700 - CertTool 1701 - Added support for the `fw_config` image 1702 - FIPTool 1703 - Added support for the `fw_config` image 1704 1705### Changed 1706 1707- Architecture support 1708- Bootloader images 1709- Build System 1710 - The top-level Makefile now supports building FipTool on Windows 1711 - The default value of `KEY_SIZE` has been changed to to 2048 when RSA is in 1712 use 1713 - The previously-deprecated macro `__ASSEMBLY__` has now been removed 1714- Common components 1715 - Certain functions that flush the console will no longer return error 1716 information 1717- Drivers 1718 - Arm GIC 1719 - Usage of `drivers/arm/gic/common/gic_common.c` has now been deprecated in 1720 favour of `drivers/arm/gic/vX/gicvX.mk` 1721 - Added support for detecting the presence of a GIC600-AE 1722 - Added support for detecting the presence of a GIC-Clayton 1723 - Marvell MCI 1724 - Now performs link tuning for all MCI interfaces to improve performance 1725 - Marvell MoChi 1726 - PIDI masters are no longer forced into a non-secure access level when 1727 `LLC_SRAM` is enabled 1728 - The SD/MMC controllers are now accessible from guest virtual machines 1729 - Mbed TLS 1730 - Migrated to Mbed TLS v2.24.0 1731 - STM32 FMC2 NAND 1732 - Adjusted FMC node bindings to include an EBI controller node 1733 - STM32 Reset 1734 - Added an optional timeout argument to assertion functions 1735 - STM32MP1 Clocks 1736 - Enabled several additional system clocks during initialization 1737- Libraries 1738 - C Standard Library 1739 - Improved `memset` performance by avoiding single-byte writes 1740 - Added optimized assembly variants of `memset` 1741 - CPU support 1742 - Renamed Cortex-Hercules to Cortex-A78 1743 - Renamed Cortex-Hercules AE to Cortex-A78 AE 1744 - Renamed Neoverse Zeus to Neoverse V1 1745 - Coreboot 1746 - Updated ‘coreboot_get_memory_type’ API to take an extra argument as a 1747 ’memory size’ that used to return a valid memory type. 1748 - libfdt 1749 - Updated to latest upstream version 1750- Platforms 1751 - Allwinner 1752 - Disabled non-secure access to PRCM power control registers 1753 - Arm 1754 - `BL32_BASE` is now platform-dependent when `SPD_spmd` is enabled 1755 - Added support for loading the Chain of Trust from the device tree 1756 - The firmware update check is now executed only once 1757 - NV-counter base addresses are now loaded from the device tree when 1758 `COT_DESC_IN_DTB` is enabled 1759 - Now loads and populates `fw_config` and `tb_fw_config` 1760 - FCONF population now occurs after caches have been enabled in order to 1761 reduce boot times 1762 - Arm Corstone-700 1763 - Platform support has been split into both an FVP and an FPGA variant 1764 - Arm FPGA 1765 - DTB and BL33 load addresses have been given sensible default values 1766 - Now reads generic timer counter frequency, GICD and GICR base addresses, 1767 and UART address from DT 1768 - Now treats the primary PL011 UART as an SBSA Generic UART 1769 - Arm FVP 1770 - Secure interrupt descriptions, UART parameters, clock frequencies and 1771 GICv3 parameters are now queried through FCONF 1772 - UART parameters are now queried through the device tree 1773 - Added an owner field to Cactus secure partitions 1774 - Increased the maximum size of BL2 when the Chain of Trust is loaded from 1775 the device tree 1776 - Reduces the maximum size of BL31 1777 - The `FVP_USE_SP804_TIMER` and `FVP_VE_USE_SP804_TIMER` build options have 1778 been removed in favour of a common `USE_SP804_TIMER` option 1779 - Added a third Cactus partition to manifests 1780 - Device tree nodes now store UUIDs in big-endian 1781 - Arm Juno 1782 - Increased the maximum size of BL2 when optimizations have not been applied 1783 - Reduced the maximum size of BL31 and BL32 1784 - Marvell AP807 1785 - Enabled snoop filters 1786 - Marvell ARMADA A3K 1787 - UART recovery images are now suffixed with `.bin` 1788 - Marvell ARMADA A8K 1789 - Option `BL31_CACHE_DISABLE` is now disabled (`0`) by default 1790 - Nvidia Tegra 1791 - Added VPR resize supported check when processing video memory resize 1792 requests 1793 - Added SMMU verification to prevent potential issues caused by undetected 1794 corruption of the SMMU configuration during boot 1795 - The GIC CPU interface is now properly disabled after CPU off 1796 - The GICv2 sources list and the `BL31_SIZE` definition have been made 1797 platform-specific 1798 - The SPE driver will no longer flush the console when writing individual 1799 characters 1800 - Nvidia Tegra194 1801 - TZDRAM setup has been moved to platform-specific early boot handlers 1802 - Increased verbosity of debug prints for RAS SErrors 1803 - Support for powering down CPUs during CPU suspend has been removed 1804 - Now verifies firewall settings before using resources 1805 - TI K3 1806 - The UART number has been made configurable through `K3_USART` 1807 - Rockchip RK3368 1808 - The maximum number of memory map regions has been increased to 20 1809 - Socionext Uniphier 1810 - The maximum size of BL33 has been increased to support larger bootloaders 1811 - STM32 1812 - Removed platform-specific DT functions in favour of using existing generic 1813 alternatives 1814 - STM32MP1 1815 - Increased verbosity of exception reports in debug builds 1816 - Device trees have been updated to align with the Linux kernel 1817 - Now uses the ETZPC driver to configure secure-aware interfaces for 1818 assignment to the non-secure world 1819 - Finished good variants have been added to the board identifier 1820 enumerations 1821 - Non-secure access to clocks and reset domains now depends on their state 1822 of registration 1823 - NEON is now disabled in `SP_MIN` 1824 - The last page of `SYSRAM` is now used as SCMI shared memory 1825 - Checks to verify platform compatibility have been added to verify that an 1826 image is compatible with the chip ID of the running platform 1827 - QEMU SBSA 1828 - Removed support for Arm's Cortex-A53 1829- Services 1830 - Renamed SPCI to FF-A 1831 - SPMD 1832 - No longer forwards requests to the non-secure world when retrieving 1833 partition information 1834 - SPMC manifest size is now retrieved directly from SPMD instead of the 1835 device tree 1836 - The FF-A version handler now returns SPMD's version when the origin of the 1837 call is secure, and SPMC's version when the origin of the call is 1838 non-secure 1839 - SPMC 1840 - Updated the manifest to declare CPU nodes in descending order as per the 1841 SPM (Hafnium) multicore requirement 1842 - Updated the device tree to mark 2GB as device memory for the first 1843 partition excluding trusted DRAM region (which is reserved for SPMC) 1844 - Increased the number of EC contexts to the maximum number of PEs as per 1845 the FF-A specification 1846- Tools 1847 - FIPTool 1848 - Now returns `0` on `help` and `help <command>` 1849 - Marvell DoImage 1850 - Updated Mbed TLS support to v2.8 1851 - SPTool 1852 - Now appends CertTool arguments 1853 1854### Resolved Issues 1855 1856- Bootloader images 1857 - Fixed compilation errors for dual-root Chains of Trust caused by symbol 1858 collision 1859 - BL31 1860 - Fixed compilation errors on platforms with fewer than 4 cores caused by 1861 initialization code exceeding the end of the stacks 1862 - Fixed compilation errors when building a position-independent image 1863- Build System 1864 - Fixed invalid empty version strings 1865 - Fixed compilation errors on Windows caused by a non-portable architecture 1866 revision comparison 1867- Drivers 1868 - Arm GIC 1869 - Fixed spurious interrupts caused by a missing barrier 1870 - STM32 Flexible Memory Controller 2 (FMC2) NAND driver 1871 - Fixed runtime instability caused by incorrect error detection logic 1872 - STM32MP1 Clock driver 1873 - Fixed incorrectly-formatted log messages 1874 - Fixed runtime instability caused by improper clock gating procedures 1875 - STMicroelectronics Raw NAND driver 1876 - Fixed runtime instability caused by incorrect unit conversion when waiting 1877 for NAND readiness 1878- Libraries 1879 - AMU 1880 - Fixed timeout errors caused by excess error logging 1881 - EL3 Runtime 1882 - Fixed runtime instability caused by improper register save/restore routine 1883 in EL2 1884 - FCONF 1885 - Fixed failure to initialize GICv3 caused by overly-strict device tree 1886 requirements 1887 - Measured Boot 1888 - Fixed driver errors caused by a missing default value for the `HASH_ALG` 1889 build option 1890 - SPE 1891 - Fixed feature detection check that prevented CPUs supporting SVE from 1892 detecting support for SPE in the non-secure world 1893 - Translation Tables 1894 - Fixed various MISRA-C 2012 static analysis violations 1895- Platforms 1896 - Allwinner A64 1897 - Fixed USB issues on certain battery-powered device caused by improperly 1898 activated USB power rail 1899 - Arm 1900 - Fixed compilation errors caused by increase in BL2 size 1901 - Fixed compilation errors caused by missing Makefile dependencies to 1902 generated files when building the FIP 1903 - Fixed MISRA-C 2012 static analysis violations caused by unused structures 1904 in include directives intended to be feature-gated 1905 - Arm FPGA 1906 - Fixed initialization issues caused by incorrect MPIDR topology mapping 1907 logic 1908 - Arm RD-N1-edge 1909 - Fixed compilation errors caused by mismatched parentheses in Makefile 1910 - Arm SGI 1911 - Fixed crashes due to the flash memory used for cold reboot attack 1912 protection not being mapped 1913 - Intel Agilex 1914 - Fixed initialization issues caused by several compounding bugs 1915 - Marvell 1916 - Fixed compilation warnings caused by multiple Makefile inclusions 1917 - Marvell ARMADA A3K 1918 - Fixed boot issue in debug builds caused by checks on the BL33 load address 1919 that are not appropriate for this platform 1920 - Nvidia Tegra 1921 - Fixed incorrect delay timer reads 1922 - Fixed spurious interrupts in the non-secure world during cold boot caused 1923 by the arbitration bit in the memory controller not being cleared 1924 - Fixed faulty video memory resize sequence 1925 - Nvidia Tegra194 1926 - Fixed incorrect alignment of TZDRAM base address 1927 - NXP iMX8M 1928 - Fixed CPU hot-plug issues caused by race condition 1929 - STM32MP1 1930 - Fixed compilation errors in highly-parallel builds caused by incorrect 1931 Makefile dependencies 1932 - STM32MP157C-ED1 1933 - Fixed initialization issues caused by missing device tree hash node 1934 - Raspberry Pi 3 1935 - Fixed compilation errors caused by incorrect dependency ordering in 1936 Makefile 1937 - Rockchip 1938 - Fixed initialization issues caused by non-critical errors when parsing FDT 1939 being treated as critical 1940 - Rockchip RK3368 1941 - Fixed runtime instability caused by incorrect CPUID shift value 1942 - QEMU 1943 - Fixed compilation errors caused by incorrect dependency ordering in 1944 Makefile 1945 - QEMU SBSA 1946 - Fixed initialization issues caused by FDT exceeding reserved memory size 1947 - QTI 1948 - Fixed compilation errors caused by inclusion of a non-existent file 1949- Services 1950 - FF-A (previously SPCI) 1951 - Fixed SPMD aborts caused by incorrect behaviour when the manifest is 1952 page-aligned 1953- Tools 1954 - Fixed compilation issues when compiling tools from within their respective 1955 directories 1956 - FIPTool 1957 - Fixed command line parsing issues on Windows when using arguments whose 1958 names also happen to be a subset of another's 1959 - Marvell DoImage 1960 - Fixed PKCS signature verification errors at boot on some platforms caused 1961 by generation of misaligned images 1962 1963### Known Issues 1964 1965- Platforms 1966 - NVIDIA Tegra 1967 - Signed comparison compiler warnings occurring in libfdt are currently 1968 being worked around by disabling the warning for the platform until the 1969 underlying issue is resolved in libfdt 1970 1971## 2.3 (2020-04-20) 1972 1973### New Features 1974 1975- Arm Architecture 1976 - Add support for Armv8.4-SecEL2 extension through the SPCI defined SPMD/SPMC 1977 components. 1978 - Build option to support EL2 context save and restore in the secure world 1979 (CTX_INCLUDE_EL2_REGS). 1980 - Add support for SMCCC v1.2 (introducing the new SMCCC_ARCH_SOC_ID SMC). Note 1981 that the support is compliant, but the SVE registers save/restore will be 1982 done as part of future S-EL2/SPM development. 1983- BL-specific 1984 - Enhanced BL2 bootloader flow to load secure partitions based on firmware 1985 configuration data (fconf). 1986 - Changes necessary to support SEPARATE_NOBITS_REGION feature 1987 - TSP and BL2_AT_EL3: Add Position Independent Execution `PIE` support 1988- Build System 1989 - Add support for documentation build as a target in Makefile 1990 - Add `COT` build option to select the Chain of Trust to use when the Trusted 1991 Boot feature is enabled (default: `tbbr`). 1992 - Added creation and injection of secure partition packages into the FIP. 1993 - Build option to support SPMC component loading and run at S-EL1 or S-EL2 1994 (SPMD_SPM_AT_SEL2). 1995 - Enable MTE support 1996 - Enable Link Time Optimization in GCC 1997 - Enable -Wredundant-decls warning check 1998 - Makefile: Add support to optionally encrypt BL31 and BL32 1999 - Add support to pass the nt_fw_config DTB to OP-TEE. 2000 - Introduce per-BL `CPPFLAGS`, `ASFLAGS`, and `LDFLAGS` 2001 - build_macros: Add CREATE_SEQ function to generate sequence of numbers 2002- CPU Support 2003 - cortex-a57: Enable higher performance non-cacheable load forwarding 2004 - Hercules: Workaround for Errata 1688305 2005 - Klein: Support added for Klein CPU 2006 - Matterhorn: Support added for Matterhorn CPU 2007- Drivers 2008 - auth: Add `calc_hash` function for hash calculation. Used for authentication 2009 of images when measured boot is enabled. 2010 - cryptocell: Add authenticated decryption framework, and support for 2011 CryptoCell-713 and CryptoCell-712 RSA 3K 2012 - gic600: Add support for multichip configuration and Clayton 2013 - gicv3: Introduce makefile, Add extended PPI and SPI range, Add support for 2014 probing multiple GIC Redistributor frames 2015 - gicv4: Add GICv4 extension for GIC driver 2016 - io: Add an IO abstraction layer to load encrypted firmwares 2017 - mhu: Derive doorbell base address 2018 - mtd: Add SPI-NOR, SPI-NAND, SPI-MEM, and raw NAND framework 2019 - scmi: Allow use of multiple SCMI channels 2020 - scu: Add a driver for snoop control unit 2021- Libraries 2022 - coreboot: Add memory range parsing and use generic base address 2023 - compiler_rt: Import popcountdi2.c and popcountsi2.c files, aeabi_ldivmode.S 2024 file and dependencies 2025 - debugFS: Add DebugFS functionality 2026 - el3_runtime: Add support for enabling S-EL2 2027 - fconf: Add Firmware Configuration Framework (fconf) (experimental). 2028 - libc: Add memrchr function 2029 - locks: bakery: Use is_dcache_enabled() helper and add a DMB to the 2030 'read_cache_op' macro 2031 - psci: Add support to enable different personality of the same soc. 2032 - xlat_tables_v2: Add support to pass shareability attribute for normal memory 2033 region, use get_current_el_maybe_constant() in is_dcache_enabled(), 2034 read-only xlat tables for BL31 memory, and add enable_mmu() 2035- New Platforms Support 2036 - arm/arm_fpga: New platform support added for FPGA 2037 - arm/rddaniel: New platform support added for rd-daniel platform 2038 - brcm/stingray: New platform support added for Broadcom stingray platform 2039 - nvidia/tegra194: New platform support for Nvidia Tegra194 platform 2040- Platforms 2041 - allwinner: Implement PSCI system suspend using SCPI, add a msgbox driver for 2042 use with SCPI, and reserve and map space for the SCP firmware 2043 - allwinner: axp: Add AXP805 support 2044 - allwinner: power: Add DLDO4 power rail 2045 - amlogic: axg: Add a build flag when using ATOS as BL32 and support for the 2046 A113D (AXG) platform 2047 - arm/a5ds: Add ethernet node and L2 cache node in devicetree 2048 - arm/common: Add support for the new `dualroot` chain of trust 2049 - arm/common: Add support for SEPARATE_NOBITS_REGION 2050 - arm/common: Re-enable PIE when RESET_TO_BL31=1 2051 - arm/common: Allow boards to specify second DRAM Base address and to define 2052 PLAT_ARM_TZC_FILTERS 2053 - arm/corstone700: Add support for mhuv2 and stack protector 2054 - arm/fvp: Add support for fconf in BL31 and SP_MIN. Populate power domain 2055 descriptor dynamically by leveraging fconf APIs. 2056 - arm/fvp: Add Cactus/Ivy Secure Partition information and use two instances 2057 of Cactus at S-EL1 2058 - arm/fvp: Add support to run BL32 in TDRAM and BL31 in secure DRAM 2059 - arm/fvp: Add support for GICv4 extension and BL2 hash calculation in BL1 2060 - arm/n1sdp: Setup multichip gic routing table, update platform macros for 2061 dual-chip setup, introduce platform information SDS region, add support to 2062 update presence of External LLC, and enable the NEOVERSE_N1_EXTERNAL_LLC 2063 flag 2064 - arm/rdn1edge: Add support for dual-chip configuration and use CREATE_SEQ 2065 helper macro to compare chip count 2066 - arm/sgm: Always use SCMI for SGM platforms 2067 - arm/sgm775: Add support for dynamic config using fconf 2068 - arm/sgi: Add multi-chip mode parameter in HW_CONFIG dts, macros for remote 2069 chip device region, chip_id and multi_chip_mode to platform variant info, 2070 and introduce number of chips macro 2071 - brcm: Add BL2 and BL31 support common across Broadcom platforms 2072 - brcm: Add iproc SPI Nor flash support, spi driver, emmc driver, and support 2073 to retrieve plat_toc_flags 2074 - hisilicon: hikey960: Enable system power off callback 2075 - intel: Enable bridge access, SiP SMC secure register access, and uboot 2076 entrypoint support 2077 - intel: Implement platform specific system reset 2 2078 - intel: Introduce mailbox response length handling 2079 - imx: console: Use CONSOLE_T_BASE for UART base address and generic console_t 2080 data structure 2081 - imx8mm: Provide uart base as build option and add the support for opteed spd 2082 on imx8mq/imx8mm 2083 - imx8qx: Provide debug uart num as build 2084 - imx8qm: Apply clk/pinmux configuration for DEBUG_CONSOLE and provide debug 2085 uart num as build param 2086 - marvell: a8k: Implement platform specific power off and add support for 2087 loading MG CM3 images 2088 - mediatek: mt8183: Add Vmodem/Vcore DVS init level 2089 - qemu: Support optional encryption of BL31 and BL32 images and 2090 ARM_LINUX_KERNEL_AS_BL33 to pass FDT address 2091 - qemu: Define ARMV7_SUPPORTS_VFP 2092 - qemu: Implement PSCI_CPU_OFF and qemu_system_off via semihosting 2093 - renesas: rcar_gen3: Add new board revision for M3ULCB 2094 - rockchip: Enable workaround for erratum 855873, claim a macro to enable hdcp 2095 feature for DP, enable power domains of rk3399 before reset, add support for 2096 UART3 as serial output, and initialize reset and poweroff GPIOs with known 2097 invalid value 2098 - rpi: Implement PSCI CPU_OFF, use MMIO accessor, autodetect Mini-UART vs. 2099 PL011 configuration, and allow using PL011 UART for RPi3/RPi4 2100 - rpi3: Include GPIO driver in all BL stages and use same "clock-less" setup 2101 scheme as RPi4 2102 - rpi3/4: Add support for offlining CPUs 2103 - st: stm32mp1: platform.mk: Support generating multiple images in one build, 2104 migrate to implicit rules, derive map file name from target name, generate 2105 linker script with fixed name, and use PHONY for the appropriate targets 2106 - st: stm32mp1: Add support for SPI-NOR, raw NAND, and SPI-NAND boot device, 2107 QSPI, FMC2 driver 2108 - st: stm32mp1: Use stm32mp_get_ddr_ns_size() function, set XN attribute for 2109 some areas in BL2, dynamically map DDR later and non-cacheable during its 2110 test, add a function to get non-secure DDR size, add DT helper for reg by 2111 name, and add compilation flags for boot devices 2112 - socionext: uniphier: Turn on ENABLE_PIE 2113 - ti: k3: Add PIE support 2114 - xilinx: versal: Add set wakeup source, client wakeup, query data, request 2115 wakeup, PM_INIT_FINALIZE, PM_GET_TRUSTZONE_VERSION, PM IOCTL, support for 2116 suspend related, and Get_ChipID APIs 2117 - xilinx: versal: Implement power down/restart related EEMI, SMC handler for 2118 EEMI, PLL related PM, clock related PM, pin control related PM, reset 2119 related PM, device related PM , APIs 2120 - xilinx: versal: Enable ipi mailbox service 2121 - xilinx: versal: Add get_api_version support and support to send PM API to 2122 PMC using IPI 2123 - xilinx: zynqmp: Add checksum support for IPI data, GET_CALLBACK_DATA 2124 function, support to query max divisor, CLK_SET_RATE_PARENT in gem clock 2125 node, support for custom type flags, LPD WDT clock to the pm_clock 2126 structure, idcodes for new RFSoC silicons ZU48DR and ZU49DR, and id for new 2127 RFSoC device ZU39DR 2128- Security 2129 - Use Speculation Barrier instruction for v8.5+ cores 2130 - Add support for optional firmware encryption feature (experimental). 2131 - Introduce a new `dualroot` chain of trust. 2132 - aarch64: Prevent speculative execution past ERET 2133 - aarch32: Stop speculative execution past exception returns. 2134- SPCI 2135 - Introduced the Secure Partition Manager Dispatcher (SPMD) component as a new 2136 standard service. 2137- Tools 2138 - cert_create: Introduce CoT build option and TBBR CoT makefile, and define 2139 the dualroot CoT 2140 - encrypt_fw: Add firmware authenticated encryption tool 2141 - memory: Add show_memory script that prints a representation of the memory 2142 layout for the latest build 2143 2144### Changed 2145 2146- Arm Architecture 2147 - PIE: Make call to GDT relocation fixup generalized 2148- BL-Specific 2149 - Increase maximum size of BL2 image 2150 - BL31: Discard .dynsym .dynstr .hash sections to make ENABLE_PIE work 2151 - BL31: Split into two separate memory regions 2152 - Unify BL linker scripts and reduce code duplication. 2153- Build System 2154 - Changes to drive cert_create for dualroot CoT 2155 - Enable -Wlogical-op always 2156 - Enable -Wshadow always 2157 - Refactor the warning flags 2158 - PIE: Pass PIE options only to BL31 2159 - Reduce space lost to object alignment 2160 - Set lld as the default linker for Clang builds 2161 - Remove -Wunused-const-variable and -Wpadded warning 2162 - Remove -Wmissing-declarations warning from WARNING1 level 2163- Drivers 2164 - authentication: Necessary fix in drivers to upgrade to mbedtls-2.18.0 2165 - console: Integrate UART base address in generic console_t 2166 - gicv3: Change API for GICR_IPRIORITYR accessors and separate GICD and GICR 2167 accessor functions 2168 - io: Change seek offset to signed long long and panic in case of io setup 2169 failure 2170 - smmu: SMMUv3: Changed retry loop to delay timer 2171 - tbbr: Reduce size of hash and ECDSA key buffers when possible 2172- Library Code 2173 - libc: Consolidate the size_t, unified, and NULL definitions, and unify 2174 intmax_t and uintmax_t on AArch32/64 2175 - ROMLIB: Optimize memory layout when ROMLIB is used 2176 - xlat_tables_v2: Use ARRAY_SIZE in REGISTER_XLAT_CONTEXT_FULL_SPEC, merge 2177 REGISTER_XLAT_CONTEXT\_{FULL_SPEC,RO_BASE_TABLE}, and simplify end address 2178 checks in mmap_add_region_check() 2179- Platforms 2180 - allwinner: Adjust SRAM A2 base to include the ARISC vectors, clean up MMU 2181 setup, reenable USE_COHERENT_MEM, remove unused include path, move the 2182 NOBITS region to SRAM A1, convert AXP803 regulator setup code into a driver, 2183 enable clock before resetting I2C/RSB 2184 - allwinner: h6: power: Switch to using the AXP driver 2185 - allwinner: a64: power: Use fdt_for_each_subnode, remove obsolete register 2186 check, remove duplicate DT check, and make sunxi_turn_off_soc static 2187 - allwinner: Build PMIC bus drivers only in BL31, clean up PMIC-related error 2188 handling, and synchronize PMIC enumerations 2189 - arm/a5ds: Change boot address to point to DDR address 2190 - arm/common: Check for out-of-bound accesses in the platform io policies 2191 - arm/corstone700: Updating the kernel arguments to support initramfs, use 2192 fdts DDR memory and XIP rootfs, and set UART clocks to 32MHz 2193 - arm/fvp: Modify multithreaded dts file of DynamIQ FVPs, slightly bump the 2194 stack size for bl1 and bl2, remove re-definition of topology related build 2195 options, stop reclaiming init code with Clang builds, and map only the 2196 needed DRAM region statically in BL31/SP_MIN 2197 - arm/juno: Maximize space allocated to SCP_BL2 2198 - arm/sgi: Bump bl1 RW limit, mark remote chip shared ram as non-cacheable, 2199 move GIC related constants to board files, include AFF3 affinity in core 2200 position calculation, move bl31_platform_setup to board file, and move 2201 topology information to board folder 2202 - common: Refactor load_auth_image_internal(). 2203 - hisilicon: Remove uefi-tools in hikey and hikey960 documentation 2204 - intel: Modify non secure access function, BL31 address mapping, mailbox's 2205 get_config_status, and stratix10 BL31 parameter handling 2206 - intel: Remove un-needed checks for qspi driver r/w and s10 unused source 2207 code 2208 - intel: Change all global sip function to static 2209 - intel: Refactor common platform code 2210 - intel: Create SiP service header file 2211 - marvell: armada: scp_bl2: Allow loading up to 8 images 2212 - marvell: comphy-a3700: Support SGMII COMPHY power off and fix USB3 powering 2213 on when on lane 2 2214 - marvell: Consolidate console register calls 2215 - mediatek: mt8183: Protect 4GB~8GB dram memory, refine GIC driver for low 2216 power scenarios, and switch PLL/CLKSQ/ck_off/axi_26m control to SPM 2217 - qemu: Update flash address map to keep FIP in secure FLASH0 2218 - renesas: rcar_gen3: Update IPL and Secure Monitor Rev.2.0.6, update DDR 2219 setting for H3, M3, M3N, change fixed destination address of BL31 and BL32, 2220 add missing #{address,size}-cells into generated DT, pass DT to OpTee OS, 2221 and move DDR drivers out of staging 2222 - rockchip: Make miniloader ddr_parameter handling optional, cleanup securing 2223 of ddr regions, move secure init to separate file, use base+size for secure 2224 ddr regions, bring TZRAM_SIZE values in lined, and prevent macro expansion 2225 in paths 2226 - rpi: Move plat_helpers.S to common 2227 - rpi3: gpio: Simplify GPIO setup 2228 - rpi4: Skip UART initialisation 2229 - st: stm32m1: Use generic console_t data structure, remove second QSPI flash 2230 instance, update for FMC2 pin muxing, and reduce MAX_XLAT_TABLES to 4 2231 - socionext: uniphier: Make on-chip SRAM and I/O register regions configurable 2232 - socionext: uniphier: Make PSCI related, counter control, UART, pinmon, NAND 2233 controller, and eMMC controller base addresses configurable 2234 - socionext: uniphier: Change block_addressing flag and the return value type 2235 of .is_usb_boot() to bool 2236 - socionext: uniphier: Run BL33 at EL2, call uniphier_scp_is_running() only 2237 when on-chip STM is supported, define PLAT_XLAT_TABLES_DYNAMIC only for BL2, 2238 support read-only xlat tables, use enable_mmu() in common function, shrink 2239 UNIPHIER_ROM_REGION_SIZE, prepare uniphier_soc_info() for next SoC, extend 2240 boot device detection for future SoCs, make all BL images completely 2241 position-independent, make uniphier_mmap_setup() work with PIE, pass SCP 2242 base address as a function parameter, set buffer offset and length for 2243 io_block dynamically, and use more mmap_add_dynamic_region() for loading 2244 images 2245 - spd/trusty: Disable error messages seen during boot, allow gic base to be 2246 specified with GICD_BASE, and allow getting trusty memsize from 2247 BL32_MEM_SIZE instead of TSP_SEC_MEM_SIZE 2248 - ti: k3: common: Enable ARM cluster power down and rename device IDs to be 2249 more consistent 2250 - ti: k3: drivers: ti_sci: Put sequence number in coherent memory and remove 2251 indirect structure of const data 2252 - xilinx: Move ipi mailbox svc to xilinx common 2253 - xilinx: zynqmp: Use GIC framework for warm restart 2254 - xilinx: zynqmp: pm: Move custom clock flags to typeflags, remove 2255 CLK_TOPSW_LSBUS from invalid clock list and rename FPD WDT clock ID 2256 - xilinx: versal: Increase OCM memory size for DEBUG builds and adjust cpu 2257 clock, Move versal_def.h and versal_private to include directory 2258- Tools 2259 - sptool: Updated sptool to accommodate building secure partition packages. 2260 2261### Resolved Issues 2262 2263- Arm Architecture 2264 - Fix crash dump for lower EL 2265- BL-Specific 2266 - Bug fix: Protect TSP prints with lock 2267 - Fix boot failures on some builds linked with ld.lld. 2268- Build System 2269 - Fix clang build if CC is not in the path. 2270 - Fix 'BL stage' comment for build macros 2271- Code Quality 2272 - coverity: Fix various MISRA violations including null pointer violations, C 2273 issues in BL1/BL2/BL31 and FDT helper functions, using boolean essential, 2274 type, and removing unnecessary header file and comparisons to LONG_MAX in 2275 debugfs devfip 2276 - Based on coding guidelines, replace all `unsigned long` depending on if 2277 fixed based on AArch32 or AArch64. 2278 - Unify type of "cpu_idx" and Platform specific defines across PSCI module. 2279- Drivers 2280 - auth: Necessary fix in drivers to upgrade to mbedtls-2.18.0 2281 - delay_timer: Fix non-standard frequency issue in udelay 2282 - gicv3: Fix compiler dependent behavior 2283 - gic600: Fix include ordering according to the coding style and power up 2284 sequence 2285- Library Code 2286 - el3_runtime: Fix stack pointer maintenance on EA handling path, fixup 2287 'cm_setup_context' prototype, and adds TPIDR_EL2 register to the context 2288 save restore routines 2289 - libc: Fix SIZE_MAX on AArch32 2290 - locks: T589: Fix insufficient ordering guarantees in bakery lock 2291 - pmf: Fix 'tautological-constant-compare' error, Make the runtime 2292 instrumentation work on AArch32, and Simplify PMF helper macro definitions 2293 across header files 2294 - xlat_tables_v2: Fix assembler warning of PLAT_RO_XLAT_TABLES 2295- Platforms 2296 - allwinner: Fix H6 GPIO and CCU memory map addresses and incorrect ARISC code 2297 patch offset check 2298 - arm/a5ds: Correct system freq and Cache Writeback Granule, and cleanup 2299 enable-method in devicetree 2300 - arm/fvp: Fix incorrect GIC mapping, BL31 load address and image size for 2301 RESET_TO_BL31=1, topology description of cpus for DynamIQ based FVP, and 2302 multithreaded FVP power domain tree 2303 - arm/fvp: spm-mm: Correcting instructions to build SPM for FVP 2304 - arm/common: Fix ROTPK hash generation for ECDSA encryption, BL2 bug in 2305 dynamic configuration initialisation, and current RECLAIM_INIT_CODE behavior 2306 - arm/rde1edge: Fix incorrect topology tree description 2307 - arm/sgi: Fix the incorrect check for SCMI channel ID 2308 - common: Flush dcache when storing timestamp 2309 - intel: Fix UEFI decompression issue, memory calibration, SMC SIP service, 2310 mailbox config return status, mailbox driver logic, FPGA manager on 2311 reconfiguration, and mailbox send_cmd issue 2312 - imx: Fix shift-overflow errors, the rdc memory region slot's offset, 2313 multiple definition of ipc_handle, missing inclusion of cdefs.h, and correct 2314 the SGIs that used for secure interrupt 2315 - mediatek: mt8183: Fix AARCH64 init fail on CPU0 2316 - rockchip: Fix definition of struct param_ddr_usage 2317 - rpi4: Fix documentation of armstub config entry 2318 - st: Correct io possible NULL pointer dereference and device_size type, nand 2319 xor_ecc.val assigned value, static analysis tool issues, and fix incorrect 2320 return value and correctly check pwr-regulators node 2321 - xilinx: zynqmp: Correct syscnt freq for QEMU and fix clock models and IDs of 2322 GEM-related clocks 2323 2324### Known Issues 2325 2326- Build System 2327 - dtb: DTB creation not supported when building on a Windows host. 2328 2329 This step in the build process is skipped when running on a Windows host. A 2330 known issue from the 1.6 release. 2331 2332 - Intermittent assertion firing `ASSERT: services/spd/tspd/tspd_main.c:105` 2333- Coverity 2334 - Intermittent Race condition in Coverity Jenkins Build Job 2335- Platforms 2336 - arm/juno: System suspend from Linux does not function as documented in the 2337 user guide 2338 2339 Following the instructions provided in the user guide document does not 2340 result in the platform entering system suspend state as expected. A message 2341 relating to the hdlcd driver failing to suspend will be emitted on the Linux 2342 terminal. 2343 2344 - mediatek/mt6795: This platform does not build in this release 2345 2346## 2.2 (2019-10-22) 2347 2348### New Features 2349 2350- Architecture 2351 - Enable Pointer Authentication (PAuth) support for Secure World 2352 2353 - Adds support for ARMv8.3-PAuth in BL1 SMC calls and BL2U image for 2354 firmware updates. 2355 2356 - Enable Memory Tagging Extension (MTE) support in both secure and non-secure 2357 worlds 2358 2359 - Adds support for the new Memory Tagging Extension arriving in ARMv8.5. MTE 2360 support is now enabled by default on systems that support it at EL0. 2361 - To enable it at ELx for both the non-secure and the secure world, the 2362 compiler flag `CTX_INCLUDE_MTE_REGS` includes register saving and 2363 restoring when necessary in order to prevent information leakage between 2364 the worlds. 2365 2366 - Add support for Branch Target Identification (BTI) 2367- Build System 2368 - Modify FVP makefile for CPUs that support both AArch64/32 2369 - AArch32: Allow compiling with soft-float toolchain 2370 - Makefile: Add default warning flags 2371 - Add Makefile check for PAuth and AArch64 2372 - Add compile-time errors for HW_ASSISTED_COHERENCY flag 2373 - Apply compile-time check for AArch64-only CPUs 2374 - build_macros: Add mechanism to prevent bin generation. 2375 - Add support for default stack-protector flag 2376 - spd: opteed: Enable NS_TIMER_SWITCH 2377 - plat/arm: Skip BL2U if RESET_TO_SP_MIN flag is set 2378 - Add new build option to let each platform select which implementation of 2379 spinlocks it wants to use 2380- CPU Support 2381 - DSU: Workaround for erratum 798953 and 936184 2382 - Neoverse N1: Force cacheable atomic to near atomic 2383 - Neoverse N1: Workaround for erratum 1073348, 1130799, 1165347, 1207823, 2384 1220197, 1257314, 1262606, 1262888, 1275112, 1315703, 1542419 2385 - Neoverse Zeus: Apply the MSR SSBS instruction 2386 - cortex-Hercules/HerculesAE: Support added for Cortex-Hercules and 2387 Cortex-HerculesAE CPUs 2388 - cortex-Hercules/HerculesAE: Enable AMU for Cortex-Hercules and 2389 Cortex-HerculesAE 2390 - cortex-a76AE: Support added for Cortex-A76AE CPU 2391 - cortex-a76: Workaround for erratum 1257314, 1262606, 1262888, 1275112, 2392 1286807 2393 - cortex-a65/a65AE: Support added for Cortex-A65 and Cortex-A65AE CPUs 2394 - cortex-a65: Enable AMU for Cortex-A65 2395 - cortex-a55: Workaround for erratum 1221012 2396 - cortex-a35: Workaround for erratum 855472 2397 - cortex-a9: Workaround for erratum 794073 2398- Drivers 2399 - console: Allow the console to register multiple times 2400 2401 - delay: Timeout detection support 2402 2403 - gicv3: Enabled multi-socket GIC redistributor frame discovery and migrated 2404 ARM platforms to the new API 2405 2406 - Adds `gicv3_rdistif_probe` function that delegates the responsibility of 2407 discovering the corresponding redistributor base frame to each CPU itself. 2408 2409 - sbsa: Add SBSA watchdog driver 2410 2411 - st/stm32_hash: Add HASH driver 2412 2413 - ti/uart: Add an AArch32 variant 2414- Library at ROM (romlib) 2415 - Introduce BTI support in Library at ROM (romlib) 2416- New Platforms Support 2417 - amlogic: g12a: New platform support added for the S905X2 (G12A) platform 2418 - amlogic: meson/gxl: New platform support added for Amlogic Meson S905x (GXL) 2419 - arm/a5ds: New platform support added for A5 DesignStart 2420 - arm/corstone: New platform support added for Corstone-700 2421 - intel: New platform support added for Agilex 2422 - mediatek: New platform support added for MediaTek mt8183 2423 - qemu/qemu_sbsa: New platform support added for QEMU SBSA platform 2424 - renesas/rcar_gen3: plat: New platform support added for D3 2425 - rockchip: New platform support added for px30 2426 - rockchip: New platform support added for rk3288 2427 - rpi: New platform support added for Raspberry Pi 4 2428- Platforms 2429 - arm/common: Introduce wrapper functions to setup secure watchdog 2430 - arm/fvp: Add Delay Timer driver to BL1 and BL31 and option for defining 2431 platform DRAM2 base 2432 - arm/fvp: Add Linux DTS files for 32 bit threaded FVPs 2433 - arm/n1sdp: Add code for DDR ECC enablement and BL33 copy to DDR, Initialise 2434 CNTFRQ in Non Secure CNTBaseN 2435 - arm/juno: Use shared mbedtls heap between BL1 and BL2 and add basic support 2436 for dynamic config 2437 - imx: Basic support for PicoPi iMX7D, rdc module init, caam module init, 2438 aipstz init, IMX_SIP_GET_SOC_INFO, IMX_SIP_BUILDINFO added 2439 - intel: Add ncore ccu driver 2440 - mediatek/mt81\*: Use new bl31_params_parse() helper 2441 - nvidia: tegra: Add support for multi console interface 2442 - qemu/qemu_sbsa: Adding memory mapping for both FLASH0/FLASH1 2443 - qemu: Added gicv3 support, new console interface in AArch32, and 2444 sub-platforms 2445 - renesas/rcar_gen3: plat: Add R-Car V3M support, new board revision for 2446 H3ULCB, DBSC4 setting before self-refresh mode 2447 - socionext/uniphier: Support console based on multi-console 2448 - st: stm32mp1: Add OP-TEE, Avenger96, watchdog, LpDDR3, authentication 2449 support and general SYSCFG management 2450 - ti/k3: common: Add support for J721E, Use coherent memory for shared data, 2451 Trap all asynchronous bus errors to EL3 2452 - xilinx/zynqmp: Add support for multi console interface, Initialize IPI table 2453 from zynqmp_config_setup() 2454- PSCI 2455 - Adding new optional PSCI hook `pwr_domain_on_finish_late` 2456 - This PSCI hook `pwr_domain_on_finish_late` is similar to 2457 `pwr_domain_on_finish` but is guaranteed to be invoked when the respective 2458 core and cluster are participating in coherency. 2459- Security 2460 - Speculative Store Bypass Safe (SSBS): Further enhance protection against 2461 Spectre variant 4 by disabling speculative loads/stores (SPSR.SSBS bit) by 2462 default. 2463 - UBSAN support and handlers 2464 - Adds support for the Undefined Behaviour sanitizer. There are two types of 2465 support offered - minimalistic trapping support which essentially 2466 immediately crashes on undefined behaviour and full support with full 2467 debug messages. 2468- Tools 2469 - cert_create: Add support for bigger RSA key sizes (3KB and 4KB), previously 2470 the maximum size was 2KB. 2471 - fiptool: Add support to build fiptool on Windows. 2472 2473### Changed 2474 2475- Architecture 2476 - Refactor ARMv8.3 Pointer Authentication support code 2477 - backtrace: Strip PAC field when PAUTH is enabled 2478 - Prettify crash reporting output on AArch64. 2479 - Rework smc_unknown return code path in smc_handler 2480 - Leverage the existing `el3_exit()` return routine for smc_unknown return 2481 path rather than a custom set of instructions. 2482- BL-Specific 2483 - Invalidate dcache build option for BL2 entry at EL3 2484 - Add missing support for BL2_AT_EL3 in XIP memory 2485- Boot Flow 2486 - Add helper to parse BL31 parameters (both versions) 2487 - Factor out cross-BL API into export headers suitable for 3rd party code 2488 - Introduce lightweight BL platform parameter library 2489- Drivers 2490 - auth: Memory optimization for Chain of Trust (CoT) description 2491 - bsec: Move bsec_mode_is_closed_device() service to platform 2492 - cryptocell: Move Cryptocell specific API into driver 2493 - gicv3: Prevent pending G1S interrupt from becoming G0 interrupt 2494 - mbedtls: Remove weak heap implementation 2495 - mmc: Increase delay between ACMD41 retries 2496 - mmc: stm32_sdmmc2: Correctly manage block size 2497 - mmc: stm32_sdmmc2: Manage max-frequency property from DT 2498 - synopsys/emmc: Do not change FIFO TH as this breaks some platforms 2499 - synopsys: Update synopsys drivers to not rely on undefined overflow 2500 behaviour 2501 - ufs: Extend the delay after reset to wait for some slower chips 2502- Platforms 2503 - amlogic/meson/gxl: Remove BL2 dependency from BL31 2504 - arm/common: Shorten the Firmware Update (FWU) process 2505 - arm/fvp: Remove GIC initialisation from secondary core cold boot 2506 - arm/sgm: Temporarily disable shared Mbed TLS heap for SGM 2507 - hisilicon: Update hisilicon drivers to not rely on undefined overflow 2508 behaviour 2509 - imx: imx8: Replace PLAT_IMX8\* with PLAT_imx8\*, remove duplicated linker 2510 symbols and deprecated code include, keep only IRQ 32 unmasked, enable all 2511 power domain by default 2512 - marvell: Prevent SError accessing PCIe link, Switch to xlat_tables_v2, do 2513 not rely on argument passed via smc, make sure that comphy init will use 2514 correct address 2515 - mediatek: mt8173: Refactor RTC and PMIC drivers 2516 - mediatek: mt8173: Apply MULTI_CONSOLE framework 2517 - nvidia: Tegra: memctrl_v2: fix "overflow before widen" coverity issue 2518 - qemu: Simplify the image size calculation, Move and generalise FDT PSCI 2519 fixup, move gicv2 codes to separate file 2520 - renesas/rcar_gen3: Convert to multi-console API, update QoS setting, Update 2521 IPL and Secure Monitor Rev2.0.4, Change to restore timer counter value at 2522 resume, Update DDR setting rev.0.35, qos: change subslot cycle, Change 2523 periodic write DQ training option. 2524 - rockchip: Allow SOCs with undefined wfe check bits, Streamline and complete 2525 UARTn_BASE macros, drop rockchip-specific imported linker symbols for bl31, 2526 Disable binary generation for all SOCs, Allow console device to be set by 2527 DTB, Use new bl31_params_parse functions 2528 - rpi/rpi3: Move shared rpi3 files into common directory 2529 - socionext/uniphier: Set CONSOLE_FLAG_TRANSLATE_CRLF and clean up console 2530 driver 2531 - socionext/uniphier: Replace DIV_ROUND_UP() with div_round_up() from 2532 utils_def.h 2533 - st/stm32mp: Split stm32mp_io_setup function, move 2534 stm32_get_gpio_bank_clock() to private file, correctly handle Clock 2535 Spreading Generator, move oscillator functions to generic file, realign 2536 device tree files with internal devs, enable RTCAPB clock for dual-core 2537 chips, use a common function to check spinlock is available, move 2538 check_header() to common code 2539 - ti/k3: Enable SEPARATE_CODE_AND_RODATA by default, Remove shared RAM space, 2540 Drop \_ADDRESS from K3_USART_BASE to match other defines, Remove MSMC port 2541 definitions, Allow USE_COHERENT_MEM for K3, Set L2 latency on A72 cores 2542- PSCI 2543 - PSCI: Lookup list of parent nodes to lock only once 2544- Secure Partition Manager (SPM): SPCI Prototype 2545 - Fix service UUID lookup 2546 - Adjust size of virtual address space per partition 2547 - Refactor xlat context creation 2548 - Move shim layer to TTBR1_EL1 2549 - Ignore empty regions in resource description 2550- Security 2551 - Refactor SPSR initialisation code 2552 - SMMUv3: Abort DMA transactions 2553 - For security DMA should be blocked at the SMMU by default unless 2554 explicitly enabled for a device. SMMU is disabled after reset with all 2555 streams bypassing the SMMU, and abortion of all incoming transactions 2556 implements a default deny policy on reset. 2557 - Moves `bl1_platform_setup()` function from arm_bl1_setup.c to FVP 2558 platforms' fvp_bl1_setup.c and fvp_ve_bl1_setup.c files. 2559- Tools 2560 - cert_create: Remove RSA PKCS#1 v1.5 support 2561 2562### Resolved Issues 2563 2564- Architecture 2565 - Fix the CAS spinlock implementation by adding a missing DSB in 2566 `spin_unlock()` 2567 - AArch64: Fix SCTLR bit definitions 2568 - Removes incorrect `SCTLR_V_BIT` definition and adds definitions for 2569 ARMv8.3-Pauth `EnIB`, `EnDA` and `EnDB` bits. 2570 - Fix restoration of PAuth context 2571 - Replace call to `pauth_context_save()` with `pauth_context_restore()` in 2572 case of unknown SMC call. 2573- BL-Specific Issues 2574 - Fix BL31 crash reporting on AArch64 only platforms 2575- Build System 2576 - Remove several warnings reported with W=2 and W=1 2577- Code Quality Issues 2578 - SCTLR and ACTLR are 32-bit for AArch32 and 64-bit for AArch64 2579 - Unify type of "cpu_idx" across PSCI module. 2580 - Assert if power level value greater then PSCI_INVALID_PWR_LVL 2581 - Unsigned long should not be used as per coding guidelines 2582 - Reduce the number of memory leaks in cert_create 2583 - Fix type of cot_desc_ptr 2584 - Use explicit-width data types in AAPCS parameter structs 2585 - Add python configuration for editorconfig 2586 - BL1: Fix type consistency 2587 - Enable -Wshift-overflow=2 to check for undefined shift behavior 2588 - Updated upstream platforms to not rely on undefined overflow behaviour 2589- Coverity Quality Issues 2590 - Remove GGC ignore -Warray-bounds 2591 - Fix Coverity #261967, Infinite loop 2592 - Fix Coverity #343017, Missing unlock 2593 - Fix Coverity #343008, Side affect in assertion 2594 - Fix Coverity #342970, Uninitialized scalar variable 2595- CPU Support 2596 - cortex-a12: Fix MIDR mask 2597- Drivers 2598 - console: Remove Arm console unregister on suspend 2599 - gicv3: Fix support for full SPI range 2600 - scmi: Fix wrong payload length 2601- Library Code 2602 - libc: Fix sparse warning for \_\_assert() 2603 - libc: Fix memchr implementation 2604- Platforms 2605 - rpi: rpi3: Fix compilation error when stack protector is enabled 2606 - socionext/uniphier: Fix compilation fail for SPM support build config 2607 - st/stm32mp1: Fix TZC400 configuration against non-secure DDR 2608 - ti/k3: common: Fix RO data area size calculation 2609- Security 2610 - AArch32: Disable Secure Cycle Counter 2611 - Changes the implementation for disabling Secure Cycle Counter. For ARMv8.5 2612 the counter gets disabled by setting `SDCR.SCCD` bit on CPU cold/warm 2613 boot. For the earlier architectures PMCR register is saved/restored on 2614 secure world entry/exit from/to Non-secure state, and cycle counting gets 2615 disabled by setting PMCR.DP bit. 2616 - AArch64: Disable Secure Cycle Counter 2617 - For ARMv8.5 the counter gets disabled by setting `MDCR_El3.SCCD` bit on 2618 CPU cold/warm boot. For the earlier architectures PMCR_EL0 register is 2619 saved/restored on secure world entry/exit from/to Non-secure state, and 2620 cycle counting gets disabled by setting PMCR_EL0.DP bit. 2621 2622### Deprecations 2623 2624- Common Code 2625 - Remove MULTI_CONSOLE_API flag and references to it 2626 - Remove deprecated `plat_crash_console_*` 2627 - Remove deprecated interfaces `get_afflvl_shift`, `mpidr_mask_lower_afflvls`, 2628 `eret` 2629 - AARCH32/AARCH64 macros are now deprecated in favor of `__aarch64__` 2630 - `__ASSEMBLY__` macro is now deprecated in favor of `__ASSEMBLER__` 2631- Drivers 2632 - console: Removed legacy console API 2633 - console: Remove deprecated finish_console_register 2634 - tzc: Remove deprecated types `tzc_action_t` and `tzc_region_attributes_t` 2635- Secure Partition Manager (SPM): 2636 - Prototype SPCI-based SPM (services/std_svc/spm) will be replaced with 2637 alternative methods of secure partitioning support. 2638 2639### Known Issues 2640 2641- Build System Issues 2642 - dtb: DTB creation not supported when building on a Windows host. 2643 2644 This step in the build process is skipped when running on a Windows host. A 2645 known issue from the 1.6 release. 2646- Platform Issues 2647 - arm/juno: System suspend from Linux does not function as documented in the 2648 user guide 2649 2650 Following the instructions provided in the user guide document does not 2651 result in the platform entering system suspend state as expected. A message 2652 relating to the hdlcd driver failing to suspend will be emitted on the Linux 2653 terminal. 2654 2655 - mediatek/mt6795: This platform does not build in this release 2656 2657## 2.1 (2019-03-29) 2658 2659### New Features 2660 2661- Architecture 2662 2663 - Support for ARMv8.3 pointer authentication in the normal and secure worlds 2664 2665 The use of pointer authentication in the normal world is enabled whenever 2666 architectural support is available, without the need for additional build 2667 flags. 2668 2669 Use of pointer authentication in the secure world remains an experimental 2670 configuration at this time. Using both the `ENABLE_PAUTH` and 2671 `CTX_INCLUDE_PAUTH_REGS` build flags, pointer authentication can be enabled 2672 in EL3 and S-EL1/0. 2673 2674 See the {ref}`Firmware Design` document for additional details on the use of 2675 pointer authentication. 2676 2677 - Enable Data Independent Timing (DIT) in EL3, where supported 2678 2679- Build System 2680 2681 - Support for BL-specific build flags 2682 2683 - Support setting compiler target architecture based on `ARM_ARCH_MINOR` build 2684 option. 2685 2686 - New `RECLAIM_INIT_CODE` build flag: 2687 2688 A significant amount of the code used for the initialization of BL31 is not 2689 needed again after boot time. In order to reduce the runtime memory 2690 footprint, the memory used for this code can be reclaimed after 2691 initialization. 2692 2693 Certain boot-time functions were marked with the `__init` attribute to 2694 enable this reclamation. 2695 2696- CPU Support 2697 2698 - cortex-a76: Workaround for erratum 1073348 2699 - cortex-a76: Workaround for erratum 1220197 2700 - cortex-a76: Workaround for erratum 1130799 2701 - cortex-a75: Workaround for erratum 790748 2702 - cortex-a75: Workaround for erratum 764081 2703 - cortex-a73: Workaround for erratum 852427 2704 - cortex-a73: Workaround for erratum 855423 2705 - cortex-a57: Workaround for erratum 817169 2706 - cortex-a57: Workaround for erratum 814670 2707 - cortex-a55: Workaround for erratum 903758 2708 - cortex-a55: Workaround for erratum 846532 2709 - cortex-a55: Workaround for erratum 798797 2710 - cortex-a55: Workaround for erratum 778703 2711 - cortex-a55: Workaround for erratum 768277 2712 - cortex-a53: Workaround for erratum 819472 2713 - cortex-a53: Workaround for erratum 824069 2714 - cortex-a53: Workaround for erratum 827319 2715 - cortex-a17: Workaround for erratum 852423 2716 - cortex-a17: Workaround for erratum 852421 2717 - cortex-a15: Workaround for erratum 816470 2718 - cortex-a15: Workaround for erratum 827671 2719 2720- Documentation 2721 2722 - Exception Handling Framework documentation 2723 - Library at ROM (romlib) documentation 2724 - RAS framework documentation 2725 - Coding Guidelines document 2726 2727- Drivers 2728 2729 - ccn: Add API for setting and reading node registers 2730 2731 - Adds `ccn_read_node_reg` function 2732 - Adds `ccn_write_node_reg` function 2733 2734 - partition: Support MBR partition entries 2735 2736 - scmi: Add `plat_css_get_scmi_info` function 2737 2738 Adds a new API `plat_css_get_scmi_info` which lets the platform register a 2739 platform-specific instance of `scmi_channel_plat_info_t` and remove the 2740 default values 2741 2742 - tzc380: Add TZC-380 TrustZone Controller driver 2743 2744 - tzc-dmc620: Add driver to manage the TrustZone Controller within the DMC-620 2745 Dynamic Memory Controller 2746 2747- Library at ROM (romlib) 2748 2749 - Add platform-specific jump table list 2750 2751 - Allow patching of romlib functions 2752 2753 This change allows patching of functions in the romlib. This can be done by 2754 adding "patch" at the end of the jump table entry for the function that 2755 needs to be patched in the file jmptbl.i. 2756 2757- Library Code 2758 2759 - Support non-LPAE-enabled MMU tables in AArch32 2760 - mmio: Add `mmio_clrsetbits_16` function 2761 - 16-bit variant of `mmio_clrsetbits` 2762 - object_pool: Add Object Pool Allocator 2763 - Manages object allocation using a fixed-size static array 2764 - Adds `pool_alloc` and `pool_alloc_n` functions 2765 - Does not provide any functions to free allocated objects (by design) 2766 - libc: Added `strlcpy` function 2767 - libc: Import `strrchr` function from FreeBSD 2768 - xlat_tables: Add support for ARMv8.4-TTST 2769 - xlat_tables: Support mapping regions without an explicitly specified VA 2770 2771- Math 2772 2773 - Added softudiv macro to support software division 2774 2775- Memory Partitioning And Monitoring (MPAM) 2776 2777 - Enabled MPAM EL2 traps (`MPAMHCR_EL2` and `MPAM_EL2`) 2778 2779- Platforms 2780 2781 - amlogic: Add support for Meson S905 (GXBB) 2782 2783 - arm/fvp_ve: Add support for FVP Versatile Express platform 2784 2785 - arm/n1sdp: Add support for Neoverse N1 System Development platform 2786 2787 - arm/rde1edge: Add support for Neoverse E1 platform 2788 2789 - arm/rdn1edge: Add support for Neoverse N1 platform 2790 2791 - arm: Add support for booting directly to Linux without an intermediate 2792 loader (AArch32) 2793 2794 - arm/juno: Enable new CPU errata workarounds for A53 and A57 2795 2796 - arm/juno: Add romlib support 2797 2798 Building a combined BL1 and ROMLIB binary file with the correct page 2799 alignment is now supported on the Juno platform. When `USE_ROMLIB` is set 2800 for Juno, it generates the combined file `bl1_romlib.bin` which needs to be 2801 used instead of bl1.bin. 2802 2803 - intel/stratix: Add support for Intel Stratix 10 SoC FPGA platform 2804 2805 - marvell: Add support for Armada-37xx SoC platform 2806 2807 - nxp: Add support for i.MX8M and i.MX7 Warp7 platforms 2808 2809 - renesas: Add support for R-Car Gen3 platform 2810 2811 - xilinx: Add support for Versal ACAP platforms 2812 2813- Position-Independent Executable (PIE) 2814 2815 PIE support has initially been added to BL31. The `ENABLE_PIE` build flag is 2816 used to enable or disable this functionality as required. 2817 2818- Secure Partition Manager 2819 2820 - New SPM implementation based on SPCI Alpha 1 draft specification 2821 2822 A new version of SPM has been implemented, based on the SPCI (Secure 2823 Partition Client Interface) and SPRT (Secure Partition Runtime) draft 2824 specifications. 2825 2826 The new implementation is a prototype that is expected to undergo intensive 2827 rework as the specifications change. It has basic support for multiple 2828 Secure Partitions and Resource Descriptions. 2829 2830 The older version of SPM, based on MM (ARM Management Mode Interface 2831 Specification), is still present in the codebase. A new build flag, `SPM_MM` 2832 has been added to allow selection of the desired implementation. This flag 2833 defaults to 1, selecting the MM-based implementation. 2834 2835- Security 2836 2837 - Spectre Variant-1 mitigations (`CVE-2017-5753`) 2838 2839 - Use Speculation Store Bypass Safe (SSBS) functionality where available 2840 2841 Provides mitigation against `CVE-2018-19440` (Not saving x0 to x3 registers 2842 can leak information from one Normal World SMC client to another) 2843 2844### Changed 2845 2846- Build System 2847 2848 - Warning levels are now selectable with `W=<1,2,3>` 2849 - Removed unneeded include paths in PLAT_INCLUDES 2850 - "Warnings as errors" (Werror) can be disabled using `E=0` 2851 - Support totally quiet output with `-s` flag 2852 - Support passing options to checkpatch using `CHECKPATCH_OPTS=<opts>` 2853 - Invoke host compiler with `HOSTCC / HOSTCCFLAGS` instead of `CC / CFLAGS` 2854 - Make device tree pre-processing similar to U-boot/Linux by: 2855 - Creating separate `CPPFLAGS` for DT preprocessing so that compiler options 2856 specific to it can be accommodated. 2857 - Replacing `CPP` with `PP` for DT pre-processing 2858 2859- CPU Support 2860 2861 - Errata report function definition is now mandatory for CPU support files 2862 2863 CPU operation files must now define a `<name>_errata_report` function to 2864 print errata status. This is no longer a weak reference. 2865 2866- Documentation 2867 2868 - Migrated some content from GitHub wiki to `docs/` directory 2869 - Security advisories now have CVE links 2870 - Updated copyright guidelines 2871 2872- Drivers 2873 2874 - console: The `MULTI_CONSOLE_API` framework has been rewritten in C 2875 2876 - console: Ported multi-console driver to AArch32 2877 2878 - gic: Remove 'lowest priority' constants 2879 2880 Removed `GIC_LOWEST_SEC_PRIORITY` and `GIC_LOWEST_NS_PRIORITY`. Platforms 2881 should define these if required, or instead determine the correct priority 2882 values at runtime. 2883 2884 - delay_timer: Check that the Generic Timer extension is present 2885 2886 - mmc: Increase command reply timeout to 10 milliseconds 2887 2888 - mmc: Poll eMMC device status to ensure `EXT_CSD` command completion 2889 2890 - mmc: Correctly check return code from `mmc_fill_device_info` 2891 2892- External Libraries 2893 2894 - libfdt: Upgraded from 1.4.2 to 1.4.6-9 2895 2896 > 2897 2898 - mbed TLS: Upgraded from 2.12 to 2.16 2899 2900 > 2901 2902 This change incorporates fixes for security issues that should be reviewed to 2903 determine if they are relevant for software implementations using Trusted 2904 Firmware-A. See the [mbed TLS releases] page for details on changes from the 2905 2.12 to the 2.16 release. 2906 2907- Library Code 2908 2909 - compiler-rt: Updated `lshrdi3.c` and `int_lib.h` with changes from LLVM 2910 master branch (r345645) 2911 - cpu: Updated macro that checks need for `CVE-2017-5715` mitigation 2912 - libc: Made setjmp and longjmp C standard compliant 2913 - libc: Allowed overriding the default libc (use `OVERRIDE_LIBC`) 2914 - libc: Moved setjmp and longjmp to the `libc/` directory 2915 2916- Platforms 2917 2918 - Removed Mbed TLS dependency from plat_bl_common.c 2919 2920 - arm: Removed unused `ARM_MAP_BL_ROMLIB` macro 2921 2922 - arm: Removed `ARM_BOARD_OPTIMISE_MEM` feature and build flag 2923 2924 - arm: Moved several components into `drivers/` directory 2925 2926 This affects the SDS, SCP, SCPI, MHU and SCMI components 2927 2928 - arm/juno: Increased maximum BL2 image size to `0xF000` 2929 2930 This change was required to accommodate a larger `libfdt` library 2931 2932- SCMI 2933 2934 - Optimized bakery locks when hardware-assisted coherency is enabled using the 2935 `HW_ASSISTED_COHERENCY` build flag 2936 2937- SDEI 2938 2939 - Added support for unconditionally resuming secure world execution after {{ 2940 SDEI }} event processing completes 2941 2942 {{ SDEI }} interrupts, although targeting EL3, occur on behalf of the 2943 non-secure world, and may have higher priority than secure world interrupts. 2944 Therefore they might preempt secure execution and yield execution to the 2945 non-secure {{ SDEI }} handler. Upon completion of {{ SDEI }} event handling, 2946 resume secure execution if it was preempted. 2947 2948- Translation Tables (XLAT) 2949 2950 - Dynamically detect need for `Common not Private (TTBRn_ELx.CnP)` bit 2951 2952 Properly handle the case where `ARMv8.2-TTCNP` is implemented in a CPU that 2953 does not implement all mandatory v8.2 features (and so must claim to 2954 implement a lower architecture version). 2955 2956### Resolved Issues 2957 2958- Architecture 2959 - Incorrect check for SSBS feature detection 2960 - Unintentional register clobber in AArch32 reset_handler function 2961- Build System 2962 - Dependency issue during DTB image build 2963 - Incorrect variable expansion in Arm platform makefiles 2964 - Building on Windows with verbose mode (`V=1`) enabled is broken 2965 - AArch32 compilation flags is missing `$(march32-directive)` 2966- BL-Specific Issues 2967 - bl2: `uintptr_t is not defined` error when `BL2_IN_XIP_MEM` is defined 2968 - bl2: Missing prototype warning in `bl2_arch_setup` 2969 - bl31: Omission of Global Offset Table (GOT) section 2970- Code Quality Issues 2971 - Multiple MISRA compliance issues 2972 - Potential NULL pointer dereference (Coverity-detected) 2973- Drivers 2974 - mmc: Local declaration of `scr` variable causes a cache issue when 2975 invalidating after the read DMA transfer completes 2976 - mmc: `ACMD41` does not send voltage information during initialization, 2977 resulting in the command being treated as a query. This prevents the command 2978 from initializing the controller. 2979 - mmc: When checking device state using `mmc_device_state()` there are no 2980 retries attempted in the event of an error 2981 - ccn: Incorrect Region ID calculation for RN-I nodes 2982 - console: `Fix MULTI_CONSOLE_API` when used as a crash console 2983 - partition: Improper NULL checking in gpt.c 2984 - partition: Compilation failure in `VERBOSE` mode (`V=1`) 2985- Library Code 2986 - common: Incorrect check for Address Authentication support 2987 2988 - xlat: Fix XLAT_V1 / XLAT_V2 incompatibility 2989 2990 The file `arm_xlat_tables.h` has been renamed to `xlat_tables_compat.h` and 2991 has been moved to a common folder. This header can be used to guarantee 2992 compatibility, as it includes the correct header based on 2993 `XLAT_TABLES_LIB_V2`. 2994 2995 - xlat: armclang unused-function warning on `xlat_clean_dcache_range` 2996 2997 - xlat: Invalid `mm_cursor` checks in `mmap_add` and `mmap_add_ctx` 2998 2999 - sdei: Missing `context.h` header 3000- Platforms 3001 - common: Missing prototype warning for `plat_log_get_prefix` 3002 3003 - arm: Insufficient maximum BL33 image size 3004 3005 - arm: Potential memory corruption during BL2-BL31 transition 3006 3007 On Arm platforms, the BL2 memory can be overlaid by BL31/BL32. The memory 3008 descriptors describing the list of executable images are created in BL2 R/W 3009 memory, which could be possibly corrupted later on by BL31/BL32 due to 3010 overlay. This patch creates a reserved location in SRAM for these 3011 descriptors and are copied over by BL2 before handing over to next BL image. 3012 3013 - juno: Invalid behaviour when `CSS_USE_SCMI_SDS_DRIVER` is not set 3014 3015 In `juno_pm.c` the `css_scmi_override_pm_ops` function was used regardless 3016 of whether the build flag was set. The original behaviour has been restored 3017 in the case where the build flag is not set. 3018- Tools 3019 - fiptool: Incorrect UUID parsing of blob parameters 3020 - doimage: Incorrect object rules in Makefile 3021 3022### Deprecations 3023 3024- Common Code 3025 - `plat_crash_console_init` function 3026 - `plat_crash_console_putc` function 3027 - `plat_crash_console_flush` function 3028 - `finish_console_register` macro 3029- AArch64-specific Code 3030 - helpers: `get_afflvl_shift` 3031 - helpers: `mpidr_mask_lower_afflvls` 3032 - helpers: `eret` 3033- Secure Partition Manager (SPM) 3034 - Boot-info structure 3035 3036### Known Issues 3037 3038- Build System Issues 3039 - dtb: DTB creation not supported when building on a Windows host. 3040 3041 This step in the build process is skipped when running on a Windows host. A 3042 known issue from the 1.6 release. 3043- Platform Issues 3044 - arm/juno: System suspend from Linux does not function as documented in the 3045 user guide 3046 3047 Following the instructions provided in the user guide document does not 3048 result in the platform entering system suspend state as expected. A message 3049 relating to the hdlcd driver failing to suspend will be emitted on the Linux 3050 terminal. 3051 3052 - arm/juno: The firmware update use-cases do not work with motherboard 3053 firmware version \< v1.5.0 (the reset reason is not preserved). The Linaro 3054 18.04 release has MB v1.4.9. The MB v1.5.0 is available in Linaro 18.10 3055 release. 3056 3057 - mediatek/mt6795: This platform does not build in this release 3058 3059## 2.0 (2018-10-02) 3060 3061### New Features 3062 3063- Removal of a number of deprecated APIs 3064 3065 - A new Platform Compatibility Policy document has been created which 3066 references a wiki page that maintains a listing of deprecated interfaces and 3067 the release after which they will be removed. 3068 - All deprecated interfaces except the MULTI_CONSOLE_API have been removed 3069 from the code base. 3070 - Various Arm and partner platforms have been updated to remove the use of 3071 removed APIs in this release. 3072 - This release is otherwise unchanged from 1.6 release 3073 3074### Issues resolved since last release 3075 3076- No issues known at 1.6 release resolved in 2.0 release 3077 3078### Known Issues 3079 3080- DTB creation not supported when building on a Windows host. This step in the 3081 build process is skipped when running on a Windows host. Known issue from 1.6 3082 version. 3083- As a result of removal of deprecated interfaces the Nvidia Tegra, Marvell 3084 Armada 8K and MediaTek MT6795 platforms do not build in this release. Also 3085 MediaTek MT8173, NXP QorIQ LS1043A, NXP i.MX8QX, NXP i.MX8QMa, Rockchip 3086 RK3328, Rockchip RK3368 and Rockchip RK3399 platforms have not been confirmed 3087 to be working after the removal of the deprecated interfaces although they do 3088 build. 3089 3090## 1.6 (2018-09-21) 3091 3092### New Features 3093 3094- Addressing Speculation Security Vulnerabilities 3095 3096 - Implement static workaround for CVE-2018-3639 for AArch32 and AArch64 3097 - Add support for dynamic mitigation for CVE-2018-3639 3098 - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76 3099 - Ensure {{ SDEI }} handler executes with CVE-2018-3639 mitigation enabled 3100 3101- Introduce RAS handling on AArch64 3102 3103 - Some RAS extensions are mandatory for Armv8.2 CPUs, with others mandatory 3104 for Armv8.4 CPUs however, all extensions are also optional extensions to the 3105 base Armv8.0 architecture. 3106 - The Armv8 RAS Extensions introduced Standard Error Records which are a set 3107 of standard registers to configure RAS node policy and allow RAS Nodes to 3108 record and expose error information for error handling agents. 3109 - Capabilities are provided to support RAS Node enumeration and iteration 3110 along with individual interrupt registrations and fault injections support. 3111 - Introduce handlers for Uncontainable errors, Double Faults and EL3 External 3112 Aborts 3113 3114- Enable Memory Partitioning And Monitoring (MPAM) for lower EL's 3115 3116 - Memory Partitioning And Monitoring is an Armv8.4 feature that enables 3117 various memory system components and resources to define partitions. 3118 Software running at various ELs can then assign themselves to the desired 3119 partition to control their performance aspects. 3120 - When ENABLE_MPAM_FOR_LOWER_ELS is set to 1, EL3 allows lower ELs to access 3121 their own MPAM registers without trapping to EL3. This patch however, 3122 doesn't make use of partitioning in EL3; platform initialisation code should 3123 configure and use partitions in EL3 if required. 3124 3125- Introduce ROM Lib Feature 3126 3127 - Support combining several libraries into a self-called "romlib" image, that 3128 may be shared across images to reduce memory footprint. The romlib image is 3129 stored in ROM but is accessed through a jump-table that may be stored in 3130 read-write memory, allowing for the library code to be patched. 3131 3132- Introduce Backtrace Feature 3133 3134 - This function displays the backtrace, the current EL and security state to 3135 allow a post-processing tool to choose the right binary to interpret the 3136 dump. 3137 - Print backtrace in assert() and panic() to the console. 3138 3139- Code hygiene changes and alignment with MISRA C-2012 guideline with fixes 3140 addressing issues complying to the following rules: 3141 3142 - MISRA rules 4.9, 5.1, 5.3, 5.7, 8.2-8.5, 8.8, 8.13, 9.3, 10.1, 10.3-10.4, 3143 10.8, 11.3, 11.6, 12.1, 14.4, 15.7, 16.1-16.7, 17.7-17.8, 20.7, 20.10, 3144 20.12, 21.1, 21.15, 22.7 3145 - Clean up the usage of void pointers to access symbols 3146 - Increase usage of static qualifier to locally used functions and data 3147 - Migrated to use of u_register_t for register read/write to better match 3148 AArch32 and AArch64 type sizes 3149 - Use int-ll64 for both AArch32 and AArch64 to assist in consistent format 3150 strings between architectures 3151 - Clean up TF-A libc by removing non arm copyrighted implementations and 3152 replacing them with modified FreeBSD and SCC implementations 3153 3154- Various changes to support Clang linker and assembler 3155 3156 - The clang assembler/preprocessor is used when Clang is selected. However, 3157 the clang linker is not used because it is unable to link TF-A objects due 3158 to immaturity of clang linker functionality at this time. 3159 3160- Refactor support APIs into Libraries 3161 3162 - Evolve libfdt, mbed TLS library and standard C library sources as proper 3163 libraries that TF-A may be linked against. 3164 3165- CPU Enhancements 3166 3167 - Add CPU support for Cortex-Ares and Cortex-A76 3168 - Add AMU support for Cortex-Ares 3169 - Add initial CPU support for Cortex-Deimos 3170 - Add initial CPU support for Cortex-Helios 3171 - Implement dynamic mitigation for CVE-2018-3639 on Cortex-A76 3172 - Implement Cortex-Ares erratum 1043202 workaround 3173 - Implement DSU erratum 936184 workaround 3174 - Check presence of fix for errata 843419 in Cortex-A53 3175 - Check presence of fix for errata 835769 in Cortex-A53 3176 3177- Translation Tables Enhancements 3178 3179 - The xlat v2 library has been refactored in order to be reused by different 3180 TF components at different EL's including the addition of EL2. Some 3181 refactoring to make the code more generic and less specific to TF, in order 3182 to reuse the library outside of this project. 3183 3184- SPM Enhancements 3185 3186 - General cleanups and refactoring to pave the way to multiple partitions 3187 support 3188 3189- SDEI Enhancements 3190 3191 - Allow platforms to define explicit events 3192 - Determine client EL from NS context's SCR_EL3 3193 - Make dispatches synchronous 3194 - Introduce jump primitives for BL31 3195 - Mask events after CPU wakeup in {{ SDEI }} dispatcher to conform to the 3196 specification 3197 3198- Misc TF-A Core Common Code Enhancements 3199 3200 - Add support for eXecute In Place (XIP) memory in BL2 3201 - Add support for the SMC Calling Convention 2.0 3202 - Introduce External Abort handling on AArch64 External Abort routed to EL3 3203 was reported as an unhandled exception and caused a panic. This change 3204 enables Trusted Firmware-A to handle External Aborts routed to EL3. 3205 - Save value of ACTLR_EL1 implementation-defined register in the CPU context 3206 structure rather than forcing it to 0. 3207 - Introduce ARM_LINUX_KERNEL_AS_BL33 build option, which allows BL31 to 3208 directly jump to a Linux kernel. This makes for a quicker and simpler boot 3209 flow, which might be useful in some test environments. 3210 - Add dynamic configurations for BL31, BL32 and BL33 enabling support for 3211 Chain of Trust (COT). 3212 - Make TF UUID RFC 4122 compliant 3213 3214- New Platform Support 3215 3216 - Arm SGI-575 3217 - Arm SGM-775 3218 - Allwinner sun50i_64 3219 - Allwinner sun50i_h6 3220 - NXP QorIQ LS1043A 3221 - NXP i.MX8QX 3222 - NXP i.MX8QM 3223 - NXP i.MX7Solo WaRP7 3224 - TI K3 3225 - Socionext Synquacer SC2A11 3226 - Marvell Armada 8K 3227 - STMicroelectronics STM32MP1 3228 3229- Misc Generic Platform Common Code Enhancements 3230 3231 - Add MMC framework that supports both eMMC and SD card devices 3232 3233- Misc Arm Platform Common Code Enhancements 3234 3235 - Demonstrate PSCI MEM_PROTECT from el3_runtime 3236 - Provide RAS support 3237 - Migrate AArch64 port to the multi console driver. The old API is deprecated 3238 and will eventually be removed. 3239 - Move BL31 below BL2 to enable BL2 overlay resulting in changes in the layout 3240 of BL images in memory to enable more efficient use of available space. 3241 - Add cpp build processing for dtb that allows processing device tree with 3242 external includes. 3243 - Extend FIP io driver to support multiple FIP devices 3244 - Add support for SCMI AP core configuration protocol v1.0 3245 - Use SCMI AP core protocol to set the warm boot entrypoint 3246 - Add support to Mbed TLS drivers for shared heap among different BL images to 3247 help optimise memory usage 3248 - Enable non-secure access to UART1 through a build option to support a serial 3249 debug port for debugger connection 3250 3251- Enhancements for Arm Juno Platform 3252 3253 - Add support for TrustZone Media Protection 1 (TZMP1) 3254 3255- Enhancements for Arm FVP Platform 3256 3257 - Dynamic_config: remove the FVP dtb files 3258 - Set DYNAMIC_WORKAROUND_CVE_2018_3639=1 on FVP by default 3259 - Set the ability to dynamically disable Trusted Boot Board authentication to 3260 be off by default with DYN_DISABLE_AUTH 3261 - Add librom enhancement support in FVP 3262 - Support shared Mbed TLS heap between BL1 and BL2 that allow a reduction in 3263 BL2 size for FVP 3264 3265- Enhancements for Arm SGI/SGM Platform 3266 3267 - Enable ARM_PLAT_MT flag for SGI-575 3268 - Add dts files to enable support for dynamic config 3269 - Add RAS support 3270 - Support shared Mbed TLS heap for SGI and SGM between BL1 and BL2 3271 3272- Enhancements for Non Arm Platforms 3273 3274 - Raspberry Pi Platform 3275 - Hikey Platforms 3276 - Xilinx Platforms 3277 - QEMU Platform 3278 - Rockchip rk3399 Platform 3279 - TI Platforms 3280 - Socionext Platforms 3281 - Allwinner Platforms 3282 - NXP Platforms 3283 - NVIDIA Tegra Platform 3284 - Marvell Platforms 3285 - STMicroelectronics STM32MP1 Platform 3286 3287### Issues resolved since last release 3288 3289- No issues known at 1.5 release resolved in 1.6 release 3290 3291### Known Issues 3292 3293- DTB creation not supported when building on a Windows host. This step in the 3294 build process is skipped when running on a Windows host. Known issue from 1.5 3295 version. 3296 3297## 1.5 (2018-03-20) 3298 3299### New features 3300 3301- Added new firmware support to enable RAS (Reliability, Availability, and 3302 Serviceability) functionality. 3303 3304 - Secure Partition Manager (SPM): A Secure Partition is a software execution 3305 environment instantiated in S-EL0 that can be used to implement simple 3306 management and security services. The SPM is the firmware component that is 3307 responsible for managing a Secure Partition. 3308 3309 - SDEI dispatcher: Support for interrupt-based {{ SDEI }} events and all 3310 interfaces as defined by the {{ SDEI }} specification v1.0, see 3311 [SDEI Specification] 3312 3313 - Exception Handling Framework (EHF): Framework that allows dispatching of EL3 3314 interrupts to their registered handlers which are registered based on their 3315 priorities. Facilitates firmware-first error handling policy where 3316 asynchronous exceptions may be routed to EL3. 3317 3318 Integrated the TSPD with EHF. 3319 3320- Updated PSCI support: 3321 3322 - Implemented PSCI v1.1 optional features `MEM_PROTECT` and `SYSTEM_RESET2`. 3323 The supported PSCI version was updated to v1.1. 3324 3325 - Improved PSCI STAT timestamp collection, including moving accounting for 3326 retention states to be inside the locks and fixing handling of wrap-around 3327 when calculating residency in AArch32 execution state. 3328 3329 - Added optional handler for early suspend that executes when suspending to a 3330 power-down state and with data caches enabled. 3331 3332 This may provide a performance improvement on platforms where it is safe to 3333 perform some or all of the platform actions from `pwr_domain_suspend` with 3334 the data caches enabled. 3335 3336- Enabled build option, BL2_AT_EL3, for BL2 to allow execution at EL3 without 3337 any dependency on TF BL1. 3338 3339 This allows platforms which already have a non-TF Boot ROM to directly load 3340 and execute BL2 and subsequent BL stages without need for BL1. This was not 3341 previously possible because BL2 executes at S-EL1 and cannot jump straight to 3342 EL3. 3343 3344- Implemented support for SMCCC v1.1, including `SMCCC_VERSION` and 3345 `SMCCC_ARCH_FEATURES`. 3346 3347 Additionally, added support for `SMCCC_VERSION` in PSCI features to enable 3348 discovery of the SMCCC version via PSCI feature call. 3349 3350- Added Dynamic Configuration framework which enables each of the boot loader 3351 stages to be dynamically configured at runtime if required by the platform. 3352 The boot loader stage may optionally specify a firmware configuration file 3353 and/or hardware configuration file that can then be shared with the next boot 3354 loader stage. 3355 3356 Introduced a new BL handover interface that essentially allows passing of 4 3357 arguments between the different BL stages. 3358 3359 Updated cert_create and fip_tool to support the dynamic configuration files. 3360 The COT also updated to support these new files. 3361 3362- Code hygiene changes and alignment with MISRA guideline: 3363 3364 - Fix use of undefined macros. 3365 - Achieved compliance with Mandatory MISRA coding rules. 3366 - Achieved compliance for following Required MISRA rules for the default build 3367 configurations on FVP and Juno platforms : 7.3, 8.3, 8.4, 8.5 and 8.8. 3368 3369- Added support for Armv8.2-A architectural features: 3370 3371 - Updated translation table set-up to set the CnP (Common not Private) bit for 3372 secure page tables so that multiple PEs in the same Inner Shareable domain 3373 can use the same translation table entries for a given stage of translation 3374 in a particular translation regime. 3375 - Extended the supported values of ID_AA64MMFR0_EL1.PARange to include the 3376 52-bit Physical Address range. 3377 - Added support for the Scalable Vector Extension to allow Normal world 3378 software to access SVE functionality but disable access to SVE, SIMD and 3379 floating point functionality from the Secure world in order to prevent 3380 corruption of the Z-registers. 3381 3382- Added support for Armv8.4-A architectural feature Activity Monitor Unit (AMU) 3383 3384 extensions. 3385 3386 In addition to the v8.4 architectural extension, AMU support on Cortex-A75 was 3387 implemented. 3388 3389- Enhanced OP-TEE support to enable use of pageable OP-TEE image. The Arm 3390 standard platforms are updated to load up to 3 images for OP-TEE; header, 3391 pager image and paged image. 3392 3393 The chain of trust is extended to support the additional images. 3394 3395- Enhancements to the translation table library: 3396 3397 - Introduced APIs to get and set the memory attributes of a region. 3398 - Added support to manage both privilege levels in translation regimes that 3399 describe translations for 2 Exception levels, specifically the EL1&0 3400 translation regime, and extended the memory map region attributes to include 3401 specifying Non-privileged access. 3402 - Added support to specify the granularity of the mappings of each region, for 3403 instance a 2MB region can be specified to be mapped with 4KB page tables 3404 instead of a 2MB block. 3405 - Disabled the higher VA range to avoid unpredictable behaviour if there is an 3406 attempt to access addresses in the higher VA range. 3407 - Added helpers for Device and Normal memory MAIR encodings that align with 3408 the Arm Architecture Reference Manual for Armv8-A (Arm DDI0487B.b). 3409 - Code hygiene including fixing type length and signedness of constants, 3410 refactoring of function to enable the MMU, removing all instances where the 3411 virtual address space is hardcoded and added comments that document 3412 alignment needed between memory attributes and attributes specified in 3413 TCR_ELx. 3414 3415- Updated GIC support: 3416 3417 - Introduce new APIs for GICv2 and GICv3 that provide the capability to 3418 specify interrupt properties rather than list of interrupt numbers alone. 3419 The Arm platforms and other upstream platforms are migrated to use interrupt 3420 properties. 3421 3422 - Added helpers to save / restore the GICv3 context, specifically the 3423 Distributor and Redistributor contexts and architectural parts of the ITS 3424 power management. The Distributor and Redistributor helpers also support the 3425 implementation-defined part of GIC-500 and GIC-600. 3426 3427 Updated the Arm FVP platform to save / restore the GICv3 context on system 3428 suspend / resume as an example of how to use the helpers. 3429 3430 Introduced a new TZC secured DDR carve-out for use by Arm platforms for 3431 storing EL3 runtime data such as the GICv3 register context. 3432 3433- Added support for Armv7-A architecture via build option ARM_ARCH_MAJOR=7. This 3434 includes following features: 3435 3436 - Updates GICv2 driver to manage GICv1 with security extensions. 3437 - Software implementation for 32bit division. 3438 - Enabled use of generic timer for platforms that do not set 3439 ARM_CORTEX_Ax=yes. 3440 - Support for Armv7-A Virtualization extensions \[DDI0406C_C\]. 3441 - Support for both Armv7-A platforms that only have 32-bit addressing and 3442 Armv7-A platforms that support large page addressing. 3443 - Included support for following Armv7 CPUs: Cortex-A12, Cortex-A17, 3444 Cortex-A7, Cortex-A5, Cortex-A9, Cortex-A15. 3445 - Added support in QEMU for Armv7-A/Cortex-A15. 3446 3447- Enhancements to Firmware Update feature: 3448 3449 - Updated the FWU documentation to describe the additional images needed for 3450 Firmware update, and how they are used for both the Juno platform and the 3451 Arm FVP platforms. 3452 3453- Enhancements to Trusted Board Boot feature: 3454 3455 - Added support to cert_create tool for RSA PKCS1# v1.5 and SHA384, SHA512 and 3456 SHA256. 3457 - For Arm platforms added support to use ECDSA keys. 3458 - Enhanced the mbed TLS wrapper layer to include support for both RSA and 3459 ECDSA to enable runtime selection between RSA and ECDSA keys. 3460 3461- Added support for secure interrupt handling in AArch32 sp_min, hardcoded to 3462 only handle FIQs. 3463 3464- Added support to allow a platform to load images from multiple boot sources, 3465 for example from a second flash drive. 3466 3467- Added a logging framework that allows platforms to reduce the logging level at 3468 runtime and additionally the prefix string can be defined by the platform. 3469 3470- Further improvements to register initialisation: 3471 3472 - Control register PMCR_EL0 / PMCR is set to prohibit cycle counting in the 3473 secure world. This register is added to the list of registers that are saved 3474 and restored during world switch. 3475 - When EL3 is running in AArch32 execution state, the Non-secure version of 3476 SCTLR is explicitly initialised during the warmboot flow rather than relying 3477 on the hardware to set the correct reset values. 3478 3479- Enhanced support for Arm platforms: 3480 3481 - Introduced driver for Shared-Data-Structure (SDS) framework which is used 3482 for communication between SCP and the AP CPU, replacing Boot-Over_MHU (BOM) 3483 protocol. 3484 3485 The Juno platform is migrated to use SDS with the SCMI support added in v1.3 3486 and is set as default. 3487 3488 The driver can be found in the plat/arm/css/drivers folder. 3489 3490 - Improved memory usage by only mapping TSP memory region when the TSPD has 3491 been included in the build. This reduces the memory footprint and avoids 3492 unnecessary memory being mapped. 3493 3494 - Updated support for multi-threading CPUs for FVP platforms - always check 3495 the MT field in MPDIR and access the bit fields accordingly. 3496 3497 - Support building for platforms that model DynamIQ configuration by 3498 implementing all CPUs in a single cluster. 3499 3500 - Improved nor flash driver, for instance clearing status registers before 3501 sending commands. Driver can be found plat/arm/board/common folder. 3502 3503- Enhancements to QEMU platform: 3504 3505 - Added support for TBB. 3506 - Added support for using OP-TEE pageable image. 3507 - Added support for LOAD_IMAGE_V2. 3508 - Migrated to use translation table library v2 by default. 3509 - Added support for SEPARATE_CODE_AND_RODATA. 3510 3511- Applied workarounds CVE-2017-5715 on Arm Cortex-A57, -A72, -A73 and -A75, and 3512 for Armv7-A CPUs Cortex-A9, -A15 and -A17. 3513 3514- Applied errata workaround for Arm Cortex-A57: 859972. 3515 3516- Applied errata workaround for Arm Cortex-A72: 859971. 3517 3518- Added support for Poplar 96Board platform. 3519 3520- Added support for Raspberry Pi 3 platform. 3521 3522- Added Call Frame Information (CFI) assembler directives to the vector entries 3523 which enables debuggers to display the backtrace of functions that triggered a 3524 synchronous abort. 3525 3526- Added ability to build dtb. 3527 3528- Added support for pre-tool (cert_create and fiptool) image processing enabling 3529 compression of the image files before processing by cert_create and fiptool. 3530 3531 This can reduce fip size and may also speed up loading of images. The image 3532 verification will also get faster because certificates are generated based on 3533 compressed images. 3534 3535 Imported zlib 1.2.11 to implement gunzip() for data compression. 3536 3537- Enhancements to fiptool: 3538 3539 - Enabled the fiptool to be built using Visual Studio. 3540 - Added padding bytes at the end of the last image in the fip to be facilitate 3541 transfer by DMA. 3542 3543### Issues resolved since last release 3544 3545- TF-A can be built with optimisations disabled (-O0). 3546- Memory layout updated to enable Trusted Board Boot on Juno platform when 3547 running TF-A in AArch32 execution mode (resolving [tf-issue#501]). 3548 3549### Known Issues 3550 3551- DTB creation not supported when building on a Windows host. This step in the 3552 build process is skipped when running on a Windows host. 3553 3554## 1.4 (2017-07-07) 3555 3556### New features 3557 3558- Enabled support for platforms with hardware assisted coherency. 3559 3560 A new build option HW_ASSISTED_COHERENCY allows platforms to take advantage of 3561 the following optimisations: 3562 3563 - Skip performing cache maintenance during power-up and power-down. 3564 - Use spin-locks instead of bakery locks. 3565 - Enable data caches early on warm-booted CPUs. 3566 3567- Added support for Cortex-A75 and Cortex-A55 processors. 3568 3569 Both Cortex-A75 and Cortex-A55 processors use the Arm DynamIQ Shared Unit 3570 (DSU). The power-down and power-up sequences are therefore mostly managed in 3571 hardware, reducing complexity of the software operations. 3572 3573- Introduced Arm GIC-600 driver. 3574 3575 Arm GIC-600 IP complies with Arm GICv3 architecture. For FVP platforms, the 3576 GIC-600 driver is chosen when FVP_USE_GIC_DRIVER is set to FVP_GIC600. 3577 3578- Updated GICv3 support: 3579 3580 - Introduced power management APIs for GICv3 Redistributor. These APIs allow 3581 platforms to power down the Redistributor during CPU power on/off. Requires 3582 the GICv3 implementations to have power management operations. 3583 3584 Implemented the power management APIs for FVP. 3585 3586 - GIC driver data is flushed by the primary CPU so that secondary CPU do not 3587 read stale GIC data. 3588 3589- Added support for Arm System Control and Management Interface v1.0 (SCMI). 3590 3591 The SCMI driver implements the power domain management and system power 3592 management protocol of the SCMI specification (Arm DEN 0056ASCMI) for 3593 communicating with any compliant power controller. 3594 3595 Support is added for the Juno platform. The driver can be found in the 3596 plat/arm/css/drivers folder. 3597 3598- Added support to enable pre-integration of TBB with the Arm TrustZone 3599 CryptoCell product, to take advantage of its hardware Root of Trust and crypto 3600 acceleration services. 3601 3602- Enabled Statistical Profiling Extensions for lower ELs. 3603 3604 The firmware support is limited to the use of SPE in the Non-secure state and 3605 accesses to the SPE specific registers from S-EL1 will trap to EL3. 3606 3607 The SPE are architecturally specified for AArch64 only. 3608 3609- Code hygiene changes aligned with MISRA guidelines: 3610 3611 - Fixed signed / unsigned comparison warnings in the translation table 3612 library. 3613 - Added U(\_x) macro and together with the existing ULL(\_x) macro fixed some 3614 of the signed-ness defects flagged by the MISRA scanner. 3615 3616- Enhancements to Firmware Update feature: 3617 3618 - The FWU logic now checks for overlapping images to prevent execution of 3619 unauthenticated arbitrary code. 3620 - Introduced new FWU_SMC_IMAGE_RESET SMC that changes the image loading state 3621 machine to go from COPYING, COPIED or AUTHENTICATED states to RESET state. 3622 Previously, this was only possible when the authentication of an image 3623 failed or when the execution of the image finished. 3624 - Fixed integer overflow which addressed TFV-1: Malformed Firmware Update SMC 3625 can result in copy of unexpectedly large data into secure memory. 3626 3627- Introduced support for Arm Compiler 6 and LLVM (clang). 3628 3629 TF-A can now also be built with the Arm Compiler 6 or the clang compilers. The 3630 assembler and linker must be provided by the GNU toolchain. 3631 3632 Tested with Arm CC 6.7 and clang 3.9.x and 4.0.x. 3633 3634- Memory footprint improvements: 3635 3636 - Introduced `tf_snprintf`, a reduced version of `snprintf` which has support 3637 for a limited set of formats. 3638 3639 The mbedtls driver is updated to optionally use `tf_snprintf` instead of 3640 `snprintf`. 3641 3642 - The `assert()` is updated to no longer print the function name, and 3643 additional logging options are supported via an optional platform define 3644 `PLAT_LOG_LEVEL_ASSERT`, which controls how verbose the assert output is. 3645 3646- Enhancements to TF-A support when running in AArch32 execution state: 3647 3648 - Support booting SP_MIN and BL33 in AArch32 execution mode on Juno. Due to 3649 hardware limitations, BL1 and BL2 boot in AArch64 state and there is 3650 additional trampoline code to warm reset into SP_MIN in AArch32 execution 3651 state. 3652 - Added support for Arm Cortex-A53/57/72 MPCore processors including the 3653 errata workarounds that are already implemented for AArch64 execution state. 3654 - For FVP platforms, added AArch32 Trusted Board Boot support, including the 3655 Firmware Update feature. 3656 3657- Introduced Arm SiP service for use by Arm standard platforms. 3658 3659 - Added new Arm SiP Service SMCs to enable the Non-secure world to read PMF 3660 timestamps. 3661 3662 Added PMF instrumentation points in TF-A in order to quantify the overall 3663 time spent in the PSCI software implementation. 3664 3665 - Added new Arm SiP service SMC to switch execution state. 3666 3667 This allows the lower exception level to change its execution state from 3668 AArch64 to AArch32, or vice verse, via a request to EL3. 3669 3670- Migrated to use SPDX\[0\] license identifiers to make software license 3671 auditing simpler. 3672 3673 \:::\{note} Files that have been imported by FreeBSD have not been modified. 3674 \::: 3675 3676 \[0\]: <https://spdx.org/> 3677 3678- Enhancements to the translation table library: 3679 3680 - Added version 2 of translation table library that allows different 3681 translation tables to be modified by using different 'contexts'. Version 1 3682 of the translation table library only allows the current EL's translation 3683 tables to be modified. 3684 3685 Version 2 of the translation table also added support for dynamic regions; 3686 regions that can be added and removed dynamically whilst the MMU is enabled. 3687 Static regions can only be added or removed before the MMU is enabled. 3688 3689 The dynamic mapping functionality is enabled or disabled when compiling by 3690 setting the build option PLAT_XLAT_TABLES_DYNAMIC to 1 or 0. This can be 3691 done per-image. 3692 3693 - Added support for translation regimes with two virtual address spaces such 3694 as the one shared by EL1 and EL0. 3695 3696 The library does not support initializing translation tables for EL0 3697 software. 3698 3699 - Added support to mark the translation tables as non-cacheable using an 3700 additional build option `XLAT_TABLE_NC`. 3701 3702- Added support for GCC stack protection. A new build option 3703 ENABLE_STACK_PROTECTOR was introduced that enables compilation of all BL 3704 images with one of the GCC -fstack-protector-\* options. 3705 3706 A new platform function plat_get_stack_protector_canary() was introduced that 3707 returns a value used to initialize the canary for stack corruption detection. 3708 For increased effectiveness of protection platforms must provide an 3709 implementation that returns a random value. 3710 3711- Enhanced support for Arm platforms: 3712 3713 - Added support for multi-threading CPUs, indicated by `MT` field in MPDIR. A 3714 new build flag `ARM_PLAT_MT` is added, and when enabled, the functions 3715 accessing MPIDR assume that the `MT` bit is set for the platform and access 3716 the bit fields accordingly. 3717 3718 Also, a new API `plat_arm_get_cpu_pe_count` is added when `ARM_PLAT_MT` is 3719 enabled, returning the Processing Element count within the physical CPU 3720 corresponding to `mpidr`. 3721 3722 - The Arm platforms migrated to use version 2 of the translation tables. 3723 3724 - Introduced a new Arm platform layer API `plat_arm_psci_override_pm_ops` 3725 which allows Arm platforms to modify `plat_arm_psci_pm_ops` and therefore 3726 dynamically define PSCI capability. 3727 3728 - The Arm platforms migrated to use IMAGE_LOAD_V2 by default. 3729 3730- Enhanced reporting of errata workaround status with the following policy: 3731 3732 - If an errata workaround is enabled: 3733 3734 - If it applies (i.e. the CPU is affected by the errata), an INFO message is 3735 printed, confirming that the errata workaround has been applied. 3736 - If it does not apply, a VERBOSE message is printed, confirming that the 3737 errata workaround has been skipped. 3738 3739 - If an errata workaround is not enabled, but would have applied had it been, 3740 a WARN message is printed, alerting that errata workaround is missing. 3741 3742- Added build options ARM_ARCH_MAJOR and ARM_ARM_MINOR to choose the 3743 architecture version to target TF-A. 3744 3745- Updated the spin lock implementation to use the more efficient CAS (Compare 3746 And Swap) instruction when available. This instruction was introduced in 3747 Armv8.1-A. 3748 3749- Applied errata workaround for Arm Cortex-A53: 855873. 3750 3751- Applied errata workaround for Arm-Cortex-A57: 813419. 3752 3753- Enabled all A53 and A57 errata workarounds for Juno, both in AArch64 and 3754 AArch32 execution states. 3755 3756- Added support for Socionext UniPhier SoC platform. 3757 3758- Added support for Hikey960 and Hikey platforms. 3759 3760- Added support for Rockchip RK3328 platform. 3761 3762- Added support for NVidia Tegra T186 platform. 3763 3764- Added support for Designware emmc driver. 3765 3766- Imported libfdt v1.4.2 that addresses buffer overflow in fdt_offset_ptr(). 3767 3768- Enhanced the CPU operations framework to allow power handlers to be registered 3769 on per-level basis. This enables support for future CPUs that have multiple 3770 threads which might need powering down individually. 3771 3772- Updated register initialisation to prevent unexpected behaviour: 3773 3774 - Debug registers MDCR-EL3/SDCR and MDCR_EL2/HDCR are initialised to avoid 3775 unexpected traps into the higher exception levels and disable secure 3776 self-hosted debug. Additionally, secure privileged external debug on Juno is 3777 disabled by programming the appropriate Juno SoC registers. 3778 - EL2 and EL3 configurable controls are initialised to avoid unexpected traps 3779 in the higher exception levels. 3780 - Essential control registers are fully initialised on EL3 start-up, when 3781 initialising the non-secure and secure context structures and when preparing 3782 to leave EL3 for a lower EL. This gives better alignment with the Arm ARM 3783 which states that software must initialise RES0 and RES1 fields with 0 / 1. 3784 3785- Enhanced PSCI support: 3786 3787 - Introduced new platform interfaces that decouple PSCI stat residency 3788 calculation from PMF, enabling platforms to use alternative methods of 3789 capturing timestamps. 3790 - PSCI stat accounting performed for retention/standby states when requested 3791 at multiple power levels. 3792 3793- Simplified fiptool to have a single linked list of image descriptors. 3794 3795- For the TSP, resolved corruption of pre-empted secure context by aborting any 3796 pre-empted SMC during PSCI power management requests. 3797 3798### Issues resolved since last release 3799 3800- TF-A can be built with the latest mbed TLS version (v2.4.2). The earlier 3801 version 2.3.0 cannot be used due to build warnings that the TF-A build system 3802 interprets as errors. 3803- TBBR, including the Firmware Update feature is now supported on FVP platforms 3804 when running TF-A in AArch32 state. 3805- The version of the AEMv8 Base FVP used in this release has resolved the issue 3806 of the model executing a reset instead of terminating in response to a 3807 shutdown request using the PSCI SYSTEM_OFF API. 3808 3809### Known Issues 3810 3811- Building TF-A with compiler optimisations disabled (-O0) fails. 3812- Trusted Board Boot currently does not work on Juno when running Trusted 3813 Firmware in AArch32 execution state due to error when loading the sp_min to 3814 memory because of lack of free space available. See [tf-issue#501] for more 3815 details. 3816- The errata workaround for A53 errata 843419 is only available from binutils 3817 2.26 and is not present in GCC4.9. If this errata is applicable to the 3818 platform, please use GCC compiler version of at least 5.0. See [PR#1002] for 3819 more details. 3820 3821## 1.3 (2016-10-13) 3822 3823### New features 3824 3825- Added support for running TF-A in AArch32 execution state. 3826 3827 The PSCI library has been refactored to allow integration with **EL3 Runtime 3828 Software**. This is software that is executing at the highest secure privilege 3829 which is EL3 in AArch64 or Secure SVC/Monitor mode in AArch32. See 3830 \{ref}`PSCI Library Integration guide for Armv8-A AArch32 systems`. 3831 3832 Included is a minimal AArch32 Secure Payload, **SP-MIN**, that illustrates the 3833 usage and integration of the PSCI library with EL3 Runtime Software running in 3834 AArch32 state. 3835 3836 Booting to the BL1/BL2 images as well as booting straight to the Secure 3837 Payload is supported. 3838 3839- Improvements to the initialization framework for the PSCI service and Arm 3840 Standard Services in general. 3841 3842 The PSCI service is now initialized as part of Arm Standard Service 3843 initialization. This consolidates the initializations of any Arm Standard 3844 Service that may be added in the future. 3845 3846 A new function `get_arm_std_svc_args()` is introduced to get arguments 3847 corresponding to each standard service and must be implemented by the EL3 3848 Runtime Software. 3849 3850 For PSCI, a new versioned structure `psci_lib_args_t` is introduced to 3851 initialize the PSCI Library. **Note** this is a compatibility break due to the 3852 change in the prototype of `psci_setup()`. 3853 3854- To support AArch32 builds of BL1 and BL2, implemented a new, alternative 3855 firmware image loading mechanism that adds flexibility. 3856 3857 The current mechanism has a hard-coded set of images and execution order 3858 (BL31, BL32, etc). The new mechanism is data-driven by a list of image 3859 descriptors provided by the platform code. 3860 3861 Arm platforms have been updated to support the new loading mechanism. 3862 3863 The new mechanism is enabled by a build flag (`LOAD_IMAGE_V2`) which is 3864 currently off by default for the AArch64 build. 3865 3866 **Note** `TRUSTED_BOARD_BOOT` is currently not supported when `LOAD_IMAGE_V2` 3867 is enabled. 3868 3869- Updated requirements for making contributions to TF-A. 3870 3871 Commits now must have a 'Signed-off-by:' field to certify that the 3872 contribution has been made under the terms of the 3873 {download}`Developer Certificate of Origin <../dco.txt>`. 3874 3875 A signed CLA is no longer required. 3876 3877 The {ref}`Contributor's Guide` has been updated to reflect this change. 3878 3879- Introduced Performance Measurement Framework (PMF) which provides support for 3880 capturing, storing, dumping and retrieving time-stamps to measure the 3881 execution time of critical paths in the firmware. This relies on defining 3882 fixed sample points at key places in the code. 3883 3884- To support the QEMU platform port, imported libfdt v1.4.1 from 3885 <https://git.kernel.org/pub/scm/utils/dtc/dtc.git> 3886 3887- Updated PSCI support: 3888 3889 - Added support for PSCI NODE_HW_STATE API for Arm platforms. 3890 - New optional platform hook, `pwr_domain_pwr_down_wfi()`, in `plat_psci_ops` 3891 to enable platforms to perform platform-specific actions needed to enter 3892 powerdown, including the 'wfi' invocation. 3893 - PSCI STAT residency and count functions have been added on Arm platforms by 3894 using PMF. 3895 3896- Enhancements to the translation table library: 3897 3898 - Limited memory mapping support for region overlaps to only allow regions to 3899 overlap that are identity mapped or have the same virtual to physical 3900 address offset, and overlap completely but must not cover the same area. 3901 3902 This limitation will enable future enhancements without having to support 3903 complex edge cases that may not be necessary. 3904 3905 - The initial translation lookup level is now inferred from the virtual 3906 address space size. Previously, it was hard-coded. 3907 3908 - Added support for mapping Normal, Inner Non-cacheable, Outer Non-cacheable 3909 memory in the translation table library. 3910 3911 This can be useful to map a non-cacheable memory region, such as a DMA 3912 buffer. 3913 3914 - Introduced the MT_EXECUTE/MT_EXECUTE_NEVER memory mapping attributes to 3915 specify the access permissions for instruction execution of a memory region. 3916 3917- Enabled support to isolate code and read-only data on separate memory pages, 3918 allowing independent access control to be applied to each. 3919 3920- Enabled SCR_EL3.SIF (Secure Instruction Fetch) bit in BL1 and BL31 common 3921 architectural setup code, preventing fetching instructions from non-secure 3922 memory when in secure state. 3923 3924- Enhancements to FIP support: 3925 3926 - Replaced `fip_create` with `fiptool` which provides a more consistent and 3927 intuitive interface as well as additional support to remove an image from a 3928 FIP file. 3929 - Enabled printing the SHA256 digest with info command, allowing quick 3930 verification of an image within a FIP without having to extract the image 3931 and running sha256sum on it. 3932 - Added support for unpacking the contents of an existing FIP file into the 3933 working directory. 3934 - Aligned command line options for specifying images to use same naming 3935 convention as specified by TBBR and already used in cert_create tool. 3936 3937- Refactored the TZC-400 driver to also support memory controllers that 3938 integrate TZC functionality, for example Arm CoreLink DMC-500. Also added 3939 DMC-500 specific support. 3940 3941- Implemented generic delay timer based on the system generic counter and 3942 migrated all platforms to use it. 3943 3944- Enhanced support for Arm platforms: 3945 3946 - Updated image loading support to make SCP images (SCP_BL2 and SCP_BL2U) 3947 optional. 3948 - Enhanced topology description support to allow multi-cluster topology 3949 definitions. 3950 - Added interconnect abstraction layer to help platform ports select the right 3951 interconnect driver, CCI or CCN, for the platform. 3952 - Added support to allow loading BL31 in the TZC-secured DRAM instead of the 3953 default secure SRAM. 3954 - Added support to use a System Security Control (SSC) Registers Unit enabling 3955 TF-A to be compiled to support multiple Arm platforms and then select one at 3956 runtime. 3957 - Restricted mapping of Trusted ROM in BL1 to what is actually needed by BL1 3958 rather than entire Trusted ROM region. 3959 - Flash is now mapped as execute-never by default. This increases security by 3960 restricting the executable region to what is strictly needed. 3961 3962- Applied following erratum workarounds for Cortex-A57: 833471, 826977, 829520, 3963 828024 and 826974. 3964 3965- Added support for Mediatek MT6795 platform. 3966 3967- Added support for QEMU virtualization Armv8-A target. 3968 3969- Added support for Rockchip RK3368 and RK3399 platforms. 3970 3971- Added support for Xilinx Zynq UltraScale+ MPSoC platform. 3972 3973- Added support for Arm Cortex-A73 MPCore Processor. 3974 3975- Added support for Arm Cortex-A72 processor. 3976 3977- Added support for Arm Cortex-A35 processor. 3978 3979- Added support for Arm Cortex-A32 MPCore Processor. 3980 3981- Enabled preloaded BL33 alternative boot flow, in which BL2 does not load BL33 3982 from non-volatile storage and BL31 hands execution over to a preloaded BL33. 3983 The User Guide has been updated with an example of how to use this option with 3984 a bootwrapped kernel. 3985 3986- Added support to build TF-A on a Windows-based host machine. 3987 3988- Updated Trusted Board Boot prototype implementation: 3989 3990 - Enabled the ability for a production ROM with TBBR enabled to boot test 3991 software before a real ROTPK is deployed (e.g. manufacturing mode). Added 3992 support to use ROTPK in certificate without verifying against the platform 3993 value when `ROTPK_NOT_DEPLOYED` bit is set. 3994 - Added support for non-volatile counter authentication to the Authentication 3995 Module to protect against roll-back. 3996 3997- Updated GICv3 support: 3998 3999 - Enabled processor power-down and automatic power-on using GICv3. 4000 - Enabled G1S or G0 interrupts to be configured independently. 4001 - Changed FVP default interrupt driver to be the GICv3-only driver. **Note** 4002 the default build of TF-A will not be able to boot Linux kernel with GICv2 4003 FDT blob. 4004 - Enabled wake-up from CPU_SUSPEND to stand-by by temporarily re-routing 4005 interrupts and then restoring after resume. 4006 4007### Issues resolved since last release 4008 4009### Known issues 4010 4011- The version of the AEMv8 Base FVP used in this release resets the model 4012 instead of terminating its execution in response to a shutdown request using 4013 the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the 4014 model. 4015- Building TF-A with compiler optimisations disabled (`-O0`) fails. 4016- TF-A cannot be built with mbed TLS version v2.3.0 due to build warnings that 4017 the TF-A build system interprets as errors. 4018- TBBR is not currently supported when running TF-A in AArch32 state. 4019 4020## 1.2 (2015-12-22) 4021 4022### New features 4023 4024- The Trusted Board Boot implementation on Arm platforms now conforms to the 4025 mandatory requirements of the TBBR specification. 4026 4027 In particular, the boot process is now guarded by a Trusted Watchdog, which 4028 will reset the system in case of an authentication or loading error. On Arm 4029 platforms, a secure instance of Arm SP805 is used as the Trusted Watchdog. 4030 4031 Also, a firmware update process has been implemented. It enables authenticated 4032 firmware to update firmware images from external interfaces to SoC 4033 Non-Volatile memories. This feature functions even when the current firmware 4034 in the system is corrupt or missing; it therefore may be used as a recovery 4035 mode. 4036 4037- Improvements have been made to the Certificate Generation Tool (`cert_create`) 4038 as follows. 4039 4040 - Added support for the Firmware Update process by extending the Chain of 4041 Trust definition in the tool to include the Firmware Update certificate and 4042 the required extensions. 4043 - Introduced a new API that allows one to specify command line options in the 4044 Chain of Trust description. This makes the declaration of the tool's 4045 arguments more flexible and easier to extend. 4046 - The tool has been reworked to follow a data driven approach, which makes it 4047 easier to maintain and extend. 4048 4049- Extended the FIP tool (`fip_create`) to support the new set of images involved 4050 in the Firmware Update process. 4051 4052- Various memory footprint improvements. In particular: 4053 4054 - The bakery lock structure for coherent memory has been optimised. 4055 - The mbed TLS SHA1 functions are not needed, as SHA256 is used to generate 4056 the certificate signature. Therefore, they have been compiled out, reducing 4057 the memory footprint of BL1 and BL2 by approximately 6 KB. 4058 - On Arm development platforms, each BL stage now individually defines the 4059 number of regions that it needs to map in the MMU. 4060 4061- Added the following new design documents: 4062 4063 - {ref}`Authentication Framework & Chain of Trust` 4064 - {ref}`Firmware Update (FWU)` 4065 - {ref}`CPU Reset` 4066 - {ref}`PSCI Power Domain Tree Structure` 4067 4068- Applied the new image terminology to the code base and documentation, as 4069 described in the {ref}`Image Terminology` document. 4070 4071- The build system has been reworked to improve readability and facilitate 4072 adding future extensions. 4073 4074- On Arm standard platforms, BL31 uses the boot console during cold boot but 4075 switches to the runtime console for any later logs at runtime. The TSP uses 4076 the runtime console for all output. 4077 4078- Implemented a basic NOR flash driver for Arm platforms. It programs the device 4079 using CFI (Common Flash Interface) standard commands. 4080 4081- Implemented support for booting EL3 payloads on Arm platforms, which reduces 4082 the complexity of developing EL3 baremetal code by doing essential baremetal 4083 initialization. 4084 4085- Provided separate drivers for GICv3 and GICv2. These expect the entire 4086 software stack to use either GICv2 or GICv3; hybrid GIC software systems are 4087 no longer supported and the legacy Arm GIC driver has been deprecated. 4088 4089- Added support for Juno r1 and r2. A single set of Juno TF-A binaries can run 4090 on Juno r0, r1 and r2 boards. Note that this TF-A version depends on a Linaro 4091 release that does *not* contain Juno r2 support. 4092 4093- Added support for MediaTek mt8173 platform. 4094 4095- Implemented a generic driver for Arm CCN IP. 4096 4097- Major rework of the PSCI implementation. 4098 4099 - Added framework to handle composite power states. 4100 - Decoupled the notions of affinity instances (which describes the 4101 hierarchical arrangement of cores) and of power domain topology, instead of 4102 assuming a one-to-one mapping. 4103 - Better alignment with version 1.0 of the PSCI specification. 4104 4105- Added support for the SYSTEM_SUSPEND PSCI API on Arm platforms. When invoked 4106 on the last running core on a supported platform, this puts the system into a 4107 low power mode with memory retention. 4108 4109- Unified the reset handling code as much as possible across BL stages. Also 4110 introduced some build options to enable optimization of the reset path on 4111 platforms that support it. 4112 4113- Added a simple delay timer API, as well as an SP804 timer driver, which is 4114 enabled on FVP. 4115 4116- Added support for NVidia Tegra T210 and T132 SoCs. 4117 4118- Reorganised Arm platforms ports to greatly improve code shareability and 4119 facilitate the reuse of some of this code by other platforms. 4120 4121- Added support for Arm Cortex-A72 processor in the CPU specific framework. 4122 4123- Provided better error handling. Platform ports can now define their own error 4124 handling, for example to perform platform specific bookkeeping or post-error 4125 actions. 4126 4127- Implemented a unified driver for Arm Cache Coherent Interconnects used for 4128 both CCI-400 & CCI-500 IPs. Arm platforms ports have been migrated to this 4129 common driver. The standalone CCI-400 driver has been deprecated. 4130 4131### Issues resolved since last release 4132 4133- The Trusted Board Boot implementation has been redesigned to provide greater 4134 modularity and scalability. See the 4135 \{ref}`Authentication Framework & Chain of Trust` document. All missing 4136 mandatory features are now implemented. 4137- The FVP and Juno ports may now use the hash of the ROTPK stored in the Trusted 4138 Key Storage registers to verify the ROTPK. Alternatively, a development public 4139 key hash embedded in the BL1 and BL2 binaries might be used instead. The 4140 location of the ROTPK is chosen at build-time using the `ARM_ROTPK_LOCATION` 4141 build option. 4142- GICv3 is now fully supported and stable. 4143 4144### Known issues 4145 4146- The version of the AEMv8 Base FVP used in this release resets the model 4147 instead of terminating its execution in response to a shutdown request using 4148 the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the 4149 model. 4150- While this version has low on-chip RAM requirements, there are further RAM 4151 usage enhancements that could be made. 4152- The upstream documentation could be improved for structural consistency, 4153 clarity and completeness. In particular, the design documentation is 4154 incomplete for PSCI, the TSP(D) and the Juno platform. 4155- Building TF-A with compiler optimisations disabled (`-O0`) fails. 4156 4157## 1.1 (2015-02-04) 4158 4159### New features 4160 4161- A prototype implementation of Trusted Board Boot has been added. Boot loader 4162 images are verified by BL1 and BL2 during the cold boot path. BL1 and BL2 use 4163 the PolarSSL SSL library to verify certificates and images. The OpenSSL 4164 library is used to create the X.509 certificates. Support has been added to 4165 `fip_create` tool to package the certificates in a FIP. 4166 4167- Support for calling CPU and platform specific reset handlers upon entry into 4168 BL3-1 during the cold and warm boot paths has been added. This happens after 4169 another Boot ROM `reset_handler()` has already run. This enables a developer 4170 to perform additional actions or undo actions already performed during the 4171 first call of the reset handlers e.g. apply additional errata workarounds. 4172 4173- Support has been added to demonstrate routing of IRQs to EL3 instead of S-EL1 4174 when execution is in secure world. 4175 4176- The PSCI implementation now conforms to version 1.0 of the PSCI specification. 4177 All the mandatory APIs and selected optional APIs are supported. In 4178 particular, support for the `PSCI_FEATURES` API has been added. A capability 4179 variable is constructed during initialization by examining the `plat_pm_ops` 4180 and `spd_pm_ops` exported by the platform and the Secure Payload Dispatcher. 4181 This is used by the PSCI FEATURES function to determine which PSCI APIs are 4182 supported by the platform. 4183 4184- Improvements have been made to the PSCI code as follows. 4185 4186 - The code has been refactored to remove redundant parameters from internal 4187 functions. 4188 - Changes have been made to the code for PSCI `CPU_SUSPEND`, `CPU_ON` and 4189 `CPU_OFF` calls to facilitate an early return to the caller in case a 4190 failure condition is detected. For example, a PSCI `CPU_SUSPEND` call 4191 returns `SUCCESS` to the caller if a pending interrupt is detected early in 4192 the code path. 4193 - Optional platform APIs have been added to validate the `power_state` and 4194 `entrypoint` parameters early in PSCI `CPU_ON` and `CPU_SUSPEND` code paths. 4195 - PSCI migrate APIs have been reworked to invoke the SPD hook to determine the 4196 type of Trusted OS and the CPU it is resident on (if applicable). Also, 4197 during a PSCI `MIGRATE` call, the SPD hook to migrate the Trusted OS is 4198 invoked. 4199 4200- It is now possible to build TF-A without marking at least an extra page of 4201 memory as coherent. The build flag `USE_COHERENT_MEM` can be used to choose 4202 between the two implementations. This has been made possible through these 4203 changes. 4204 4205 - An implementation of Bakery locks, where the locks are not allocated in 4206 coherent memory has been added. 4207 - Memory which was previously marked as coherent is now kept coherent through 4208 the use of software cache maintenance operations. 4209 4210 Approximately, 4K worth of memory is saved for each boot loader stage when 4211 `USE_COHERENT_MEM=0`. Enabling this option increases the latencies associated 4212 with acquire and release of locks. It also requires changes to the platform 4213 ports. 4214 4215- It is now possible to specify the name of the FIP at build time by defining 4216 the `FIP_NAME` variable. 4217 4218- Issues with dependencies on the 'fiptool' makefile target have been rectified. 4219 The `fip_create` tool is now rebuilt whenever its source files change. 4220 4221- The BL3-1 runtime console is now also used as the crash console. The crash 4222 console is changed to SoC UART0 (UART2) from the previous FPGA UART0 (UART0) 4223 on Juno. In FVP, it is changed from UART0 to UART1. 4224 4225- CPU errata workarounds are applied only when the revision and part number 4226 match. This behaviour has been made consistent across the debug and release 4227 builds. The debug build additionally prints a warning if a mismatch is 4228 detected. 4229 4230- It is now possible to issue cache maintenance operations by set/way for a 4231 particular level of data cache. Levels 1-3 are currently supported. 4232 4233- The following improvements have been made to the FVP port. 4234 4235 - The build option `FVP_SHARED_DATA_LOCATION` which allowed relocation of 4236 shared data into the Trusted DRAM has been deprecated. Shared data is now 4237 always located at the base of Trusted SRAM. 4238 - BL2 Translation tables have been updated to map only the region of DRAM 4239 which is accessible to normal world. This is the region of the 2GB DDR-DRAM 4240 memory at 0x80000000 excluding the top 16MB. The top 16MB is accessible to 4241 only the secure world. 4242 - BL3-2 can now reside in the top 16MB of DRAM which is accessible only to the 4243 secure world. This can be done by setting the build flag 4244 `FVP_TSP_RAM_LOCATION` to the value `dram`. 4245 4246- Separate translation tables are created for each boot loader image. The 4247 `IMAGE_BLx` build options are used to do this. This allows each stage to 4248 create mappings only for areas in the memory map that it needs. 4249 4250- A Secure Payload Dispatcher (OPTEED) for the OP-TEE Trusted OS has been added. 4251 Details of using it with TF-A can be found in {ref}`OP-TEE Dispatcher` 4252 4253### Issues resolved since last release 4254 4255- The Juno port has been aligned with the FVP port as follows. 4256 4257 - Support for reclaiming all BL1 RW memory and BL2 memory by overlaying the 4258 BL3-1/BL3-2 NOBITS sections on top of them has been added to the Juno port. 4259 - The top 16MB of the 2GB DDR-DRAM memory at 0x80000000 is configured using 4260 the TZC-400 controller to be accessible only to the secure world. 4261 - The Arm GIC driver is used to configure the GIC-400 instead of using a GIC 4262 driver private to the Juno port. 4263 - PSCI `CPU_SUSPEND` calls that target a standby state are now supported. 4264 - The TZC-400 driver is used to configure the controller instead of direct 4265 accesses to the registers. 4266 4267- The Linux kernel version referred to in the user guide has DVFS and HMP 4268 support enabled. 4269 4270- DS-5 v5.19 did not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in CADI 4271 server mode. This issue is not seen with DS-5 v5.20 and Version 6.2 of the 4272 Cortex-A57-A53 Base FVPs. 4273 4274### Known issues 4275 4276- The Trusted Board Boot implementation is a prototype. There are issues with 4277 the modularity and scalability of the design. Support for a Trusted Watchdog, 4278 firmware update mechanism, recovery images and Trusted debug is absent. These 4279 issues will be addressed in future releases. 4280- The FVP and Juno ports do not use the hash of the ROTPK stored in the Trusted 4281 Key Storage registers to verify the ROTPK in the `plat_match_rotpk()` 4282 function. This prevents the correct establishment of the Chain of Trust at the 4283 first step in the Trusted Board Boot process. 4284- The version of the AEMv8 Base FVP used in this release resets the model 4285 instead of terminating its execution in response to a shutdown request using 4286 the PSCI `SYSTEM_OFF` API. This issue will be fixed in a future version of the 4287 model. 4288- GICv3 support is experimental. There are known issues with GICv3 4289 initialization in the TF-A. 4290- While this version greatly reduces the on-chip RAM requirements, there are 4291 further RAM usage enhancements that could be made. 4292- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 4293 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 4294- The Juno-specific firmware design documentation is incomplete. 4295 4296## 1.0 (2014-08-28) 4297 4298### New features 4299 4300- It is now possible to map higher physical addresses using non-flat virtual to 4301 physical address mappings in the MMU setup. 4302 4303- Wider use is now made of the per-CPU data cache in BL3-1 to store: 4304 4305 - Pointers to the non-secure and secure security state contexts. 4306 - A pointer to the CPU-specific operations. 4307 - A pointer to PSCI specific information (for example the current power 4308 state). 4309 - A crash reporting buffer. 4310 4311- The following RAM usage improvements result in a BL3-1 RAM usage reduction 4312 from 96KB to 56KB (for FVP with TSPD), and a total RAM usage reduction across 4313 all images from 208KB to 88KB, compared to the previous release. 4314 4315 - Removed the separate `early_exception` vectors from BL3-1 (2KB code size 4316 saving). 4317 - Removed NSRAM from the FVP memory map, allowing the removal of one (4KB) 4318 translation table. 4319 - Eliminated the internal `psci_suspend_context` array, saving 2KB. 4320 - Correctly dimensioned the PSCI `aff_map_node` array, saving 1.5KB in the FVP 4321 port. 4322 - Removed calling CPU mpidr from the bakery lock API, saving 160 bytes. 4323 - Removed current CPU mpidr from PSCI common code, saving 160 bytes. 4324 - Inlined the mmio accessor functions, saving 360 bytes. 4325 - Fully reclaimed all BL1 RW memory and BL2 memory on the FVP port by 4326 overlaying the BL3-1/BL3-2 NOBITS sections on top of these at runtime. 4327 - Made storing the FP register context optional, saving 0.5KB per context (8KB 4328 on the FVP port, with TSPD enabled and running on 8 CPUs). 4329 - Implemented a leaner `tf_printf()` function, allowing the stack to be 4330 greatly reduced. 4331 - Removed coherent stacks from the codebase. Stacks allocated in normal memory 4332 are now used before and after the MMU is enabled. This saves 768 bytes per 4333 CPU in BL3-1. 4334 - Reworked the crash reporting in BL3-1 to use less stack. 4335 - Optimized the EL3 register state stored in the `cpu_context` structure so 4336 that registers that do not change during normal execution are re-initialized 4337 each time during cold/warm boot, rather than restored from memory. This 4338 saves about 1.2KB. 4339 - As a result of some of the above, reduced the runtime stack size in all BL 4340 images. For BL3-1, this saves 1KB per CPU. 4341 4342- PSCI SMC handler improvements to correctly handle calls from secure states and 4343 from AArch32. 4344 4345- CPU contexts are now initialized from the `entry_point_info`. BL3-1 fully 4346 determines the exception level to use for the non-trusted firmware (BL3-3) 4347 based on the SPSR value provided by the BL2 platform code (or otherwise 4348 provided to BL3-1). This allows platform code to directly run non-trusted 4349 firmware payloads at either EL2 or EL1 without requiring an EL2 stub or OS 4350 loader. 4351 4352- Code refactoring improvements: 4353 4354 - Refactored `fvp_config` into a common platform header. 4355 - Refactored the fvp gic code to be a generic driver that no longer has an 4356 explicit dependency on platform code. 4357 - Refactored the CCI-400 driver to not have dependency on platform code. 4358 - Simplified the IO driver so it's no longer necessary to call `io_init()` and 4359 moved all the IO storage framework code to one place. 4360 - Simplified the interface the the TZC-400 driver. 4361 - Clarified the platform porting interface to the TSP. 4362 - Reworked the TSPD setup code to support the alternate BL3-2 initialization 4363 flow where BL3-1 generic code hands control to BL3-2, rather than expecting 4364 the TSPD to hand control directly to BL3-2. 4365 - Considerable rework to PSCI generic code to support CPU specific operations. 4366 4367- Improved console log output, by: 4368 4369 - Adding the concept of debug log levels. 4370 - Rationalizing the existing debug messages and adding new ones. 4371 - Printing out the version of each BL stage at runtime. 4372 - Adding support for printing console output from assembler code, including 4373 when a crash occurs before the C runtime is initialized. 4374 4375- Moved up to the latest versions of the FVPs, toolchain, EDK2, kernel, Linaro 4376 file system and DS-5. 4377 4378- On the FVP port, made the use of the Trusted DRAM region optional at build 4379 time (off by default). Normal platforms will not have such a "ready-to-use" 4380 DRAM area so it is not a good example to use it. 4381 4382- Added support for PSCI `SYSTEM_OFF` and `SYSTEM_RESET` APIs. 4383 4384- Added support for CPU specific reset sequences, power down sequences and 4385 register dumping during crash reporting. The CPU specific reset sequences 4386 include support for errata workarounds. 4387 4388- Merged the Juno port into the master branch. Added support for CPU hotplug and 4389 CPU idle. Updated the user guide to describe how to build and run on the Juno 4390 platform. 4391 4392### Issues resolved since last release 4393 4394- Removed the concept of top/bottom image loading. The image loader now 4395 automatically detects the position of the image inside the current memory 4396 layout and updates the layout to minimize fragmentation. This resolves the 4397 image loader limitations of previously releases. There are currently no plans 4398 to support dynamic image loading. 4399- CPU idle now works on the publicized version of the Foundation FVP. 4400- All known issues relating to the compiler version used have now been resolved. 4401 This TF-A version uses Linaro toolchain 14.07 (based on GCC 4.9). 4402 4403### Known issues 4404 4405- GICv3 support is experimental. The Linux kernel patches to support this are 4406 not widely available. There are known issues with GICv3 initialization in the 4407 TF-A. 4408 4409- While this version greatly reduces the on-chip RAM requirements, there are 4410 further RAM usage enhancements that could be made. 4411 4412- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 4413 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 4414 4415- The Juno-specific firmware design documentation is incomplete. 4416 4417- Some recent enhancements to the FVP port have not yet been translated into the 4418 Juno port. These will be tracked via the tf-issues project. 4419 4420- The Linux kernel version referred to in the user guide has DVFS and HMP 4421 support disabled due to some known instabilities at the time of this release. 4422 A future kernel version will re-enable these features. 4423 4424- DS-5 v5.19 does not detect Version 5.8 of the Cortex-A57-A53 Base FVPs in CADI 4425 server mode. This is because the `<SimName>` reported by the FVP in this 4426 version has changed. For example, for the Cortex-A57x4-A53x4 Base FVP, the 4427 `<SimName>` reported by the FVP is `FVP_Base_Cortex_A57x4_A53x4`, while DS-5 4428 expects it to be `FVP_Base_A57x4_A53x4`. 4429 4430 The temporary fix to this problem is to change the name of the FVP in 4431 `sw/debugger/configdb/Boards/ARM FVP/Base_A57x4_A53x4/cadi_config.xml`. Change 4432 the following line: 4433 4434 ``` 4435 <SimName>System Generator:FVP_Base_A57x4_A53x4</SimName> 4436 ``` 4437 4438 to System Generator:FVP_Base_Cortex-A57x4_A53x4 4439 4440 A similar change can be made to the other Cortex-A57-A53 Base FVP variants. 4441 4442## 0.4 (2014-06-03) 4443 4444### New features 4445 4446- Makefile improvements: 4447 4448 - Improved dependency checking when building. 4449 - Removed `dump` target (build now always produces dump files). 4450 - Enabled platform ports to optionally make use of parts of the Trusted 4451 Firmware (e.g. BL3-1 only), rather than being forced to use all parts. Also 4452 made the `fip` target optional. 4453 - Specified the full path to source files and removed use of the `vpath` 4454 keyword. 4455 4456- Provided translation table library code for potential re-use by platforms 4457 other than the FVPs. 4458 4459- Moved architectural timer setup to platform-specific code. 4460 4461- Added standby state support to PSCI cpu_suspend implementation. 4462 4463- SRAM usage improvements: 4464 4465 - Started using the `-ffunction-sections`, `-fdata-sections` and 4466 `--gc-sections` compiler/linker options to remove unused code and data from 4467 the images. Previously, all common functions were being built into all 4468 binary images, whether or not they were actually used. 4469 - Placed all assembler functions in their own section to allow more unused 4470 functions to be removed from images. 4471 - Updated BL1 and BL2 to use a single coherent stack each, rather than one per 4472 CPU. 4473 - Changed variables that were unnecessarily declared and initialized as 4474 non-const (i.e. in the .data section) so they are either uninitialized (zero 4475 init) or const. 4476 4477- Moved the Test Secure-EL1 Payload (BL3-2) to execute in Trusted SRAM by 4478 default. The option for it to run in Trusted DRAM remains. 4479 4480- Implemented a TrustZone Address Space Controller (TZC-400) driver. A default 4481 configuration is provided for the Base FVPs. This means the model parameter 4482 `-C bp.secure_memory=1` is now supported. 4483 4484- Started saving the PSCI cpu_suspend 'power_state' parameter prior to 4485 suspending a CPU. This allows platforms that implement multiple power-down 4486 states at the same affinity level to identify a specific state. 4487 4488- Refactored the entire codebase to reduce the amount of nesting in header files 4489 and to make the use of system/user includes more consistent. Also split 4490 platform.h to separate out the platform porting declarations from the required 4491 platform porting definitions and the definitions/declarations specific to the 4492 platform port. 4493 4494- Optimized the data cache clean/invalidate operations. 4495 4496- Improved the BL3-1 unhandled exception handling and reporting. Unhandled 4497 exceptions now result in a dump of registers to the console. 4498 4499- Major rework to the handover interface between BL stages, in particular the 4500 interface to BL3-1. The interface now conforms to a specification and is more 4501 future proof. 4502 4503- Added support for optionally making the BL3-1 entrypoint a reset handler 4504 (instead of BL1). This allows platforms with an alternative image loading 4505 architecture to re-use BL3-1 with fewer modifications to generic code. 4506 4507- Reserved some DDR DRAM for secure use on FVP platforms to avoid future 4508 compatibility problems with non-secure software. 4509 4510- Added support for secure interrupts targeting the Secure-EL1 Payload (SP) 4511 (using GICv2 routing only). Demonstrated this working by adding an interrupt 4512 target and supporting test code to the TSP. Also demonstrated non-secure 4513 interrupt handling during TSP processing. 4514 4515### Issues resolved since last release 4516 4517- Now support use of the model parameter `-C bp.secure_memory=1` in the Base 4518 FVPs (see **New features**). 4519- Support for secure world interrupt handling now available (see **New 4520 features**). 4521- Made enough SRAM savings (see **New features**) to enable the Test Secure-EL1 4522 Payload (BL3-2) to execute in Trusted SRAM by default. 4523- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded 4524 14.04) now correctly reports progress in the console. 4525- Improved the Makefile structure to make it easier to separate out parts of the 4526 TF-A for re-use in platform ports. Also, improved target dependency checking. 4527 4528### Known issues 4529 4530- GICv3 support is experimental. The Linux kernel patches to support this are 4531 not widely available. There are known issues with GICv3 initialization in the 4532 TF-A. 4533- Dynamic image loading is not available yet. The current image loader 4534 implementation (used to load BL2 and all subsequent images) has some 4535 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to 4536 loading errors, even if the images should theoretically fit in memory. 4537- TF-A still uses too much on-chip Trusted SRAM. A number of RAM usage 4538 enhancements have been identified to rectify this situation. 4539- CPU idle does not work on the advertised version of the Foundation FVP. Some 4540 FVP fixes are required that are not available externally at the time of 4541 writing. This can be worked around by disabling CPU idle in the Linux kernel. 4542- Various bugs in TF-A, UEFI and the Linux kernel have been observed when using 4543 Linaro toolchain versions later than 13.11. Although most of these have been 4544 fixed, some remain at the time of writing. These mainly seem to relate to a 4545 subtle change in the way the compiler converts between 64-bit and 32-bit 4546 values (e.g. during casting operations), which reveals previously hidden bugs 4547 in client code. 4548- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 4549 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 4550 4551## 0.3 (2014-02-28) 4552 4553### New features 4554 4555- Support for Foundation FVP Version 2.0 added. The documented UEFI 4556 configuration disables some devices that are unavailable in the Foundation 4557 FVP, including MMC and CLCD. The resultant UEFI binary can be used on the 4558 AEMv8 and Cortex-A57-A53 Base FVPs, as well as the Foundation FVP. 4559 4560 \:::\{note} The software will not work on Version 1.0 of the Foundation FVP. 4561 \::: 4562 4563- Enabled third party contributions. Added a new contributing.md containing 4564 instructions for how to contribute and updated copyright text in all files to 4565 acknowledge contributors. 4566 4567- The PSCI CPU_SUSPEND API has been stabilised to the extent where it can be 4568 used for entry into power down states with the following restrictions: 4569 4570 - Entry into standby states is not supported. 4571 - The API is only supported on the AEMv8 and Cortex-A57-A53 Base FVPs. 4572 4573- The PSCI AFFINITY_INFO api has undergone limited testing on the Base FVPs to 4574 allow experimental use. 4575 4576- Required C library and runtime header files are now included locally in TF-A 4577 instead of depending on the toolchain standard include paths. The local 4578 implementation has been cleaned up and reduced in scope. 4579 4580- Added I/O abstraction framework, primarily to allow generic code to load 4581 images in a platform-independent way. The existing image loading code has been 4582 reworked to use the new framework. Semi-hosting and NOR flash I/O drivers are 4583 provided. 4584 4585- Introduced Firmware Image Package (FIP) handling code and tools. A FIP 4586 combines multiple firmware images with a Table of Contents (ToC) into a single 4587 binary image. The new FIP driver is another type of I/O driver. The Makefile 4588 builds a FIP by default and the FVP platform code expect to load a FIP from 4589 NOR flash, although some support for image loading using semi- hosting is 4590 retained. 4591 4592 \:::\{note} Building a FIP by default is a non-backwards-compatible change. ::: 4593 4594 \:::\{note} Generic BL2 code now loads a BL3-3 (non-trusted firmware) image 4595 into DRAM instead of expecting this to be pre-loaded at known location. This 4596 is also a non-backwards-compatible change. ::: 4597 4598 \:::\{note} Some non-trusted firmware (e.g. UEFI) will need to be rebuilt so 4599 that it knows the new location to execute from and no longer needs to copy 4600 particular code modules to DRAM itself. ::: 4601 4602- Reworked BL2 to BL3-1 handover interface. A new composite structure 4603 (bl31_args) holds the superset of information that needs to be passed from BL2 4604 to BL3-1, including information on how handover execution control to BL3-2 (if 4605 present) and BL3-3 (non-trusted firmware). 4606 4607- Added library support for CPU context management, allowing the saving and 4608 restoring of 4609 4610 - Shared system registers between Secure-EL1 and EL1. 4611 - VFP registers. 4612 - Essential EL3 system registers. 4613 4614- Added a framework for implementing EL3 runtime services. Reworked the PSCI 4615 implementation to be one such runtime service. 4616 4617- Reworked the exception handling logic, making use of both SP_EL0 and SP_EL3 4618 stack pointers for determining the type of exception, managing general purpose 4619 and system register context on exception entry/exit, and handling SMCs. SMCs 4620 are directed to the correct EL3 runtime service. 4621 4622- Added support for a Test Secure-EL1 Payload (TSP) and a corresponding 4623 Dispatcher (TSPD), which is loaded as an EL3 runtime service. The TSPD 4624 implements Secure Monitor functionality such as world switching and EL1 4625 context management, and is responsible for communication with the TSP. 4626 4627 \:::\{note} The TSPD does not yet contain support for secure world interrupts. 4628 \::: 4629 4630 \:::\{note} The TSP/TSPD is not built by default. ::: 4631 4632### Issues resolved since last release 4633 4634- Support has been added for switching context between secure and normal worlds 4635 in EL3. 4636- PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` have now been tested (to a 4637 limited extent). 4638- The TF-A build artifacts are now placed in the `./build` directory and 4639 sub-directories instead of being placed in the root of the project. 4640- TF-A is now free from build warnings. Build warnings are now treated as 4641 errors. 4642- TF-A now provides C library support locally within the project to maintain 4643 compatibility between toolchains/systems. 4644- The PSCI locking code has been reworked so it no longer takes locks in an 4645 incorrect sequence. 4646- The RAM-disk method of loading a Linux file-system has been confirmed to work 4647 with the TF-A and Linux kernel version (based on version 3.13) used in this 4648 release, for both Foundation and Base FVPs. 4649 4650### Known issues 4651 4652The following is a list of issues which are expected to be fixed in the future 4653releases of TF-A. 4654 4655- The TrustZone Address Space Controller (TZC-400) is not being programmed yet. 4656 Use of model parameter `-C bp.secure_memory=1` is not supported. 4657- No support yet for secure world interrupt handling. 4658- GICv3 support is experimental. The Linux kernel patches to support this are 4659 not widely available. There are known issues with GICv3 initialization in 4660 TF-A. 4661- Dynamic image loading is not available yet. The current image loader 4662 implementation (used to load BL2 and all subsequent images) has some 4663 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to 4664 loading errors, even if the images should theoretically fit in memory. 4665- TF-A uses too much on-chip Trusted SRAM. Currently the Test Secure-EL1 Payload 4666 (BL3-2) executes in Trusted DRAM since there is not enough SRAM. A number of 4667 RAM usage enhancements have been identified to rectify this situation. 4668- CPU idle does not work on the advertised version of the Foundation FVP. Some 4669 FVP fixes are required that are not available externally at the time of 4670 writing. 4671- Various bugs in TF-A, UEFI and the Linux kernel have been observed when using 4672 Linaro toolchain versions later than 13.11. Although most of these have been 4673 fixed, some remain at the time of writing. These mainly seem to relate to a 4674 subtle change in the way the compiler converts between 64-bit and 32-bit 4675 values (e.g. during casting operations), which reveals previously hidden bugs 4676 in client code. 4677- The tested filesystem used for this release (Linaro AArch64 OpenEmbedded 4678 14.01) does not report progress correctly in the console. It only seems to 4679 produce error output, not standard output. It otherwise appears to function 4680 correctly. Other filesystem versions on the same software stack do not exhibit 4681 the problem. 4682- The Makefile structure doesn't make it easy to separate out parts of the TF-A 4683 for re-use in platform ports, for example if only BL3-1 is required in a 4684 platform port. Also, dependency checking in the Makefile is flawed. 4685- The firmware design documentation for the Test Secure-EL1 Payload (TSP) and 4686 its dispatcher (TSPD) is incomplete. Similarly for the PSCI section. 4687 4688## 0.2 (2013-10-25) 4689 4690### New features 4691 4692- First source release. 4693- Code for the PSCI suspend feature is supplied, although this is not enabled by 4694 default since there are known issues (see below). 4695 4696### Issues resolved since last release 4697 4698- The "psci" nodes in the FDTs provided in this release now fully comply with 4699 the recommendations made in the PSCI specification. 4700 4701### Known issues 4702 4703The following is a list of issues which are expected to be fixed in the future 4704releases of TF-A. 4705 4706- The TrustZone Address Space Controller (TZC-400) is not being programmed yet. 4707 Use of model parameter `-C bp.secure_memory=1` is not supported. 4708- No support yet for secure world interrupt handling or for switching context 4709 between secure and normal worlds in EL3. 4710- GICv3 support is experimental. The Linux kernel patches to support this are 4711 not widely available. There are known issues with GICv3 initialization in 4712 TF-A. 4713- Dynamic image loading is not available yet. The current image loader 4714 implementation (used to load BL2 and all subsequent images) has some 4715 limitations. Changing BL2 or BL3-1 load addresses in certain ways can lead to 4716 loading errors, even if the images should theoretically fit in memory. 4717- Although support for PSCI `CPU_SUSPEND` is present, it is not yet stable and 4718 ready for use. 4719- PSCI API calls `AFFINITY_INFO` & `PSCI_VERSION` are implemented but have not 4720 been tested. 4721- The TF-A make files result in all build artifacts being placed in the root of 4722 the project. These should be placed in appropriate sub-directories. 4723- The compilation of TF-A is not free from compilation warnings. Some of these 4724 warnings have not been investigated yet so they could mask real bugs. 4725- TF-A currently uses toolchain/system include files like stdio.h. It should 4726 provide versions of these within the project to maintain compatibility between 4727 toolchains/systems. 4728- The PSCI code takes some locks in an incorrect sequence. This may cause 4729 problems with suspend and hotplug in certain conditions. 4730- The Linux kernel used in this release is based on version 3.12-rc4. Using this 4731 kernel with the TF-A fails to start the file-system as a RAM-disk. It fails to 4732 execute user-space `init` from the RAM-disk. As an alternative, the 4733 VirtioBlock mechanism can be used to provide a file-system to the kernel. 4734 4735______________________________________________________________________ 4736 4737*Copyright (c) 2013-2020, Arm Limited and Contributors. All rights reserved.* 4738 4739[mbed tls releases]: https://tls.mbed.org/tech-updates/releases 4740[pr#1002]: https://github.com/ARM-software/arm-trusted-firmware/pull/1002#issuecomment-312650193 4741[sdei specification]: http://infocenter.arm.com/help/topic/com.arm.doc.den0054a/ARM_DEN0054A_Software_Delegated_Exception_Interface.pdf 4742[tf-issue#501]: https://github.com/ARM-software/tf-issues/issues/501 4743