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