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