xref: /optee_os/CHANGELOG.md (revision 30d13250c390c4f56adefdcd3b64b7cc672f9fe2)
1# OP-TEE - version 2.1.0
2
3## New features
4
5* New supported platforms:
6	* Xilinx Zynq UltraScale+ MPSOC
7	* Spreadtrum SC9860
8
9* GCC5 support
10
11* Non Linear Mapping support: In OP-TEE kernel mode, the physical to virtual
12  addresses was linear until this release, meaning the virtual addresses
13  were equal to the physical addresses. This is no more the case in this
14  release.
15
16* Font rendering routines have been introduced in order to ease an
17  implementation of Trusted UI.
18
19* File Storage: Possibility to use the normal world filesystem and the RPMB
20  implementations simultaneously.
21
22* AOSP: There is a [local manifest][aosp_local_manifest] to build OP-TEE into an AOSP build, running on HiKey.
23  Please refer to the README in that repo for instructions.
24
25* OpenEmbedded: In addition to the makefile-based build described in the optee_os README, there is an
26  [OpenEmbedded-based build][oe_build] that supports Qemu (32-bit), FVP (64-bit), and HiKey (64-bit).
27  Please refer to the README in that repo for instructions.
28
29* [Link][github_commits_2_1_0] to a list of all commits between this and
30  previous release.
31
32
33## Tested on
34Definitions:
35
36| Type | Meaning |
37| ---- | ------- |
38| Standard tests | The [optee_test][optee_test] project. |
39| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
40
41*	ARM Juno Board (vexpress-juno), standard.
42*	Foundation Models (vexpress-fvp), standard tests + extended tests,
43	using FVP ARM V8 Foundation Platformr0p0 (platform build 10.0.37)
44*	FSL i.MX6 UltraLite EVK (imx), standard.
45*	FSL ls1021a (ls-ls1021atwr), standard tests.
46*	HiKey (hikey), standard + extended tests.
47*	QEMU (vexpress-qemu), standard + extended tests.
48*	Xilinx Zynq UltraScale+ MPSOC, standard tests
49
50Note that the following platform has not been tested:
51*	MTK8173-EVB (mediatek-mt8173)
52
53
54## Known issues
55* Issue(s) open on GitHub
56  * [#868][pr868]: python-wand font generation sometimes times out
57  * [#863][pr863]: "double free or corruption" error when building optee_os
58  * [#858][pr858]: UUIDs in binary format have wrong endinanness
59  * [#857][pr857]: Formatting of UUIDs is incorrect
60  * [#847][pr847]: optee_os panic(TEE-CORE: Assertion)
61  * [#838][pr838]: TUI font rendering is _very_ slow
62  * [#814][pr814]: Persistent objects : save informations after close
63  * [#665][pr665]: xtest 1013 stalled on HiKey when log levels are 4 and optee_os is on its own UART
64  * [#506][pr506]: tee-supplicant panic & ta panic
65
66[github_commits_2_1_0]: https://github.com/OP-TEE/optee_os/compare/2.0.0...2.1.0
67[pr868]: https://github.com/OP-TEE/optee_os/issues/868
68[pr863]: https://github.com/OP-TEE/optee_os/issues/863
69[pr858]: https://github.com/OP-TEE/optee_os/issues/858
70[pr857]: https://github.com/OP-TEE/optee_os/issues/857
71[pr847]: https://github.com/OP-TEE/optee_os/issues/847
72[pr838]: https://github.com/OP-TEE/optee_os/issues/838
73[pr814]: https://github.com/OP-TEE/optee_os/issues/814
74[pr665]: https://github.com/OP-TEE/optee_os/issues/665
75[aosp_local_manifest]: https://github.com/linaro-swg/optee_android_manifest
76[oe_build]: https://github.com/linaro-swg/oe-optee
77
78# OP-TEE - version 2.0.0
79
80## New features
81
82* Generic driver: A new generic TEE driver is in the process of being
83  [upstreamed][gendrv_v9].
84  In this release, [OP-TEE/optee_linuxdriver][optee_linuxdriver] is no more used.
85  Instead, linux v4.5 is being patched using the proposed Generic TEE Driver,
86  as it can be found in [https://github.com/linaro-swg/linux/tree/optee][linux_optee]
87
88* RPMB support: Secure Storage can now use Replay Protected Memory Block (RPMB) partition
89  of an eMMC device. Check the [full documentation][rpmb_doc]
90
91* Hard-float ABI is now available.
92
93* [Link][github_commits_2_0_0] to a list of all commits between this and
94  previous release.
95
96
97## Tested on
98Definitions:
99
100| Type | Meaning |
101| ---- | ------- |
102| Standard tests | The [optee_test][optee_test] project. |
103| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
104
105*	ARM Juno Board (vexpress-juno), standard.
106*	Foundation Models (vexpress-fvp), standard tests + extended tests,
107	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
108*	FSL ls1021a (ls-ls1021atwr), standard.
109*	HiKey (hikey), standard.
110*	MTK8173-EVB (mediatek-mt8173), standard.
111*	QEMU (vexpress-qemu), standard + extended tests.
112*	STM Cannes (stm-cannes), standard + extended tests.
113
114## Known issues
115* Issue(s) open on GitHub
116  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
117  * [#506][pr506]: tee-supplicant panic & ta panic
118
119[github_commits_2_0_0]: https://github.com/OP-TEE/optee_os/compare/1.1.0...2.0.0
120[rpmb_doc]: https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage_rpmb.md
121[optee_linuxdriver]: https://github.com/OP-TEE/optee_linuxdriver
122[gendrv_v9]: https://lkml.org/lkml/2016/4/1/205
123[linux_optee]: https://github.com/linaro-swg/linux/tree/optee
124
125
126# OP-TEE - version 1.1.0
127
128
129## New features
130
131* Softfloat library: floating point support is now available in 32bits TA.
132
133* Support running 64-bits TA: on ARMv8-A platform, TA can be compiled in
134  AArch32 and/or in AArch64 in case the core is compiled in AArch64.
135  An example can be found in HiKey configuration file. Using the following
136  excerpt code, the user TA libraries are compiled in both AArch32 and
137  AArch64, and can be found in `out/arm-plat-hikey/export-ta_arm32` and
138  `out/arm-plat-hikey/export-ta_arm64`
139
140```
141    ta-targets = ta_arm32
142    ta-targets += ta_arm64
143```
144
145* Concurrent TA support: multiple TA can run in parallel on
146  several cores.
147
148* New tests added in xtest test suite: concurrent TA (xtest 1013),
149  floating point tests (xtest 1006 and os_test TA) and corruption
150  file storage (xtest 20000)
151
152* [Link][github_commits_1_1_0] to a list of all commits between this and
153  previous release.
154
155
156## Tested on
157Definitions:
158
159| Type | Meaning |
160| ---- | ------- |
161| Standard tests | The [optee_test][optee_test] project. |
162| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
163| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
164
165*	Foundation Models (vexpress-fvp), standard tests + extended tests,
166	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
167*	HiKey (hikey), standard + extended tests.
168*	MT8173 (mediatek), standard tests.
169*	QEMU (vexpress-qemu), standard + extended tests.
170*	STM Cannes (stm-cannes), standard + extended tests.
171
172## Known issues
173* Secure Storage is implemented, but note that anti-rollback protection
174  is not implemented yet.
175
176* Issue(s) open on GitHub
177  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
178  * [#296][pr296]: Connecting RPMB to the storage APIs.
179  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
180  * [#506][pr506]: tee-supplicant panic & ta panic
181
182[prld40]: https://github.com/OP-TEE/optee_linuxdriver/issues/40
183[pr506]: https://github.com/OP-TEE/optee_os/issues/506
184[github_commits_1_1_0]: https://github.com/OP-TEE/optee_os/compare/1.0.1...1.1.0
185
186
187
188# OP-TEE - version 1.0.0
189
190OP-TEE is now maintained by Linaro. Contributors do not need to
191sign a CLA anymore, but must follow the rules of the [DCO][DCO]
192(Developer Certificate of Origin) instead.
193
194
195## New features
196
197* Add hardware support for Texas Instruments DRA7xx, ARMv7 (plat-ti)
198
199* GlobalPlatform™ TEE Internal Core API Specification v1.1,
200  including ECC algorithms.
201
202* Secure Storage: Files stored by the REE are now encrypted. Operations
203  are made atomic in order to prevent inconsistencies in case of errors
204  during the storage operations. [Slides][LCStorage] describing the
205  Secure Storage have been presented at the Linaro Connect SFO15.
206
207* Change of format of the Trusted Applications: they follow a
208  [signed ELF format][elf]
209
210* Rework thread [synchronization][synchro] in optee_os.
211
212* Use of ARMv8 native cryptographic support.
213
214* [OP-TEE/optee_test][optee_test] test suite is released.
215
216* Introduce [OP-TEE/manifest][manifest] and [OP-TEE/build][build]
217  to setup and build QEMU, FVP, HiKey and Mediatek platforms. Setup scripts
218  that used to be in optee_os have been removed, except for Juno board.
219
220* [Link][github_commits_1_0_0] to a list of all commits between this and
221  previous release.
222
223
224## Tested on
225Definitions:
226
227| Type | Meaning |
228| ---- | ------- |
229| Standard tests | The [optee_test][optee_test] project. |
230| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
231| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
232
233*	ARM Juno Board (vexpress-juno), standard + extended tests.
234*	Foundation Models (vexpress-fvp), standard tests.
235*	HiKey (hikey), standard + extended tests.
236*	MT8173 (mediatek), standard tests.
237*	QEMU (vexpress-qemu), standard + extended tests.
238*	STM Cannes (stm-cannes), standard + extended tests.
239
240## Known issues
241* Secure Storage is implemented, but note that anti-rollback protection
242  is not implemented yet.
243
244* Issue(s) open on GitHub
245  * [#210][pr210]: libteec.so 32-bit does not communicate well
246    with 64-bit kernel module
247  * [#296][pr296]: Connecting RPMB to the storage APIs.
248  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
249  * [#494][pr494]: HiKey: xtest 7671 fails (1.0.0-rc2)
250
251[pr210]: https://github.com/OP-TEE/optee_os/issues/210
252[pr296]: https://github.com/OP-TEE/optee_os/issues/296
253[pr493]: https://github.com/OP-TEE/optee_os/issues/493
254[pr494]: https://github.com/OP-TEE/optee_os/issues/494
255[github_commits_1_0_0]: https://github.com/OP-TEE/optee_os/compare/0.3.0...1.0.0
256[DCO]: https://github.com/OP-TEE/optee_os/blob/master/Notice.md#contributions
257[LCStorage]: http://www.slideshare.net/linaroorg/sfo15503-secure-storage-in-optee
258[synchro]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#4-thread-handling
259[elf]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#format
260[optee_test]: https://github.com/OP-TEE/optee_test
261[manifest]: https://github.com/OP-TEE/manifest
262[build]: https://github.com/OP-TEE/build
263
264
265
266# OP-TEE - version 0.3.0
267
268## New features
269
270*   Add hardware support for
271	*   Mediatek MT8173 Board, ARMv8-A (plat-mediatek)
272	*   Hisilicon HiKey Board, ARMv8-A (plat-hikey)
273*   AArch64 build of optee_os is now possible through the configuration `CFG_ARM64_core=y`
274*	Secure Storage: Data can be encrypted prior to their storage in the non-secure.
275	Build is configured using `CFG_ENC_FS=y`
276*	A generic boot scheme can be used. Boot configuration is commonalized. This helps
277	new board support. It is applied on plat-hikey, plat-vexpress, plat-mediatek, plat-stm
278    and plat-vexpress.
279
280## Tested on
281Definitions:
282
283| Type | Meaning |
284| ---- | ------- |
285| Standard tests | The optee_test project. |
286| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
287| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
288
289*	ARM Juno Board (vexpress-juno), standard tests.
290*	Foundation Models (vexpress-fvp), standard tests.
291*	HiKey (hikey), standard tests.
292*	MT8173 (mediatek), standard tests.
293*	QEMU (vexpress-qemu), standard + extended tests.
294*	STM Cannes (stm-cannes), standard + extended tests.
295
296-------------------------------------------
297
298# OP-TEE - version 0.2.0
299
300## New features
301
302### Linux Driver Refactoring
303
304Linux Driver has been refactored. It is now split in two parts:
305*	optee.ko, the generic Linux driver. It contains all functionality
306	common to all backends.
307*	optee_armtz.ko, a specific backend dedicated to the TrustZone optee.
308	It depends on optee.ko.
309
310Loading the TrustZone optee linux driver module is now performed using
311
312    modprobe optee_armtz
313
314Thanks to the dependency between the generic and the backend modules, optee.ko is then automatically loaded.
315
316### Misc new features
317* support PL310 lock down at TEE boot
318* add 64bits support (division / print)
319
320## Tested on
321Definitions:
322
323| Type | Meaning |
324| ---- | ------- |
325| Standard tests | The optee_test project. |
326| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
327| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
328
329*   ARM Juno Board (vexpress-juno), standard tests + extended tests.
330
331*   Foundation Models (vexpress-fvp), standard + extended tests.
332
333*   QEMU (vexpress-qemu), standard + extended tests.
334
335*   STM Cannes (stm-cannes), standard + extended tests.
336
337
338## Issues resolved since last release
339*	Fix user TA trace issue, in order each TA is able to select its own trace level
340
341
342-------------------------------------------
343#OP-TEE - version 0.1.0
344
345## New features
346Below is a summary of the most important features added, but at the end you will
347find a link that present you all commits between the current and previous
348release tag.
349
350*   GlobalPlatform Client API v1.0 support.
351
352*   GlobalPlatform Internal API v1.0 support.
353
354*   GlobalPlatform Secure Elements v1.0 support.
355
356*   Add hardware support for
357
358    *   Allwinner A80, ARMv7-A.
359
360    *   ARM Juno Board, ARMv8-A.
361
362    *   Foundation Models, ARMv8-A.
363
364    *   Fast Models, ARMv8-A.
365
366    *   QEMU, ARMv7-A.
367
368    *   STM Cannes, ARMv7-A.
369
370    *   STM Orly2, ARMv7-A.
371
372*   Add LibTomCrypt as the default software cryptographic library.
373
374*   Add cryptographic abstraction layer in on secure side to ease the use of
375    other cryptographic software libraries or adding support for hardware
376    acceleration.
377
378*   Extended cryptographic API with support for HKDF, Concat KDF and PBKDF2.
379
380*   SHA-1 and SHA-256 ARMv8-A crypto extension implementation.
381
382*   Enabled paging support in OP-TEE OS.
383
384*   Add support for xtest (both standard and extended) in QEMU and FVP setup
385    scripts.
386
387*   Add documentation for the OS design, cryptographic abstraction layer, secure
388    elements design, the build system, GitHub usage, key derivation extensions,
389    ARM-Trusted Firmware usage within OP-TEE and GlobalPlatform usage within
390    OP-TEE.
391
392*   Integrate support for Travis CI.
393
394*   [Link][github_commits_0_1_0] to a list of all commits between this and
395    previous release.
396
397
398## Tested on
399Definitions:
400
401| Type | Meaning |
402| ---- | ------- |
403| Standard tests | The optee_test project. |
404| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.0.0. |
405| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
406
407*   Allwinner A80 (plat-sunxi), hello world test.
408
409*   ARM Juno Board (vexpress-juno), standard tests.
410
411*   Foundation Models (plat-vexpress-fvp), standard + extended tests
412
413*   QEMU (plat-vexpress-qemu), standard + extended tests (and Secure Elements
414    tested separately).
415
416*   STM Cannes (plat-stm-cannes), standard + extended tests.
417
418
419## Issues resolved since last release
420N/A since this is the first release tag on OP-TEE.
421
422
423## Known issues
424*   Storage is implemented, but not "Secure storage", meaning that a client
425    needs to do encrypt files on their own before storing the files.
426
427*   Issue(s) open on GitHub
428    *   [#95][pr95]: An error about building the test code of libtomcrypt.
429
430    *   [#149][pr149]: when testing optee os with arm trusted firmware (I
431	utilized optee os tee.bin as bl32 image) on juno platform, I got an
432        error.
433
434    *   [#161][pr161]: tee_svc_cryp.c lacks accessibility checks on
435        user-supplied TEE_Attributes.
436
437[hello_world]: https://github.com/jenswi-linaro/lcu14_optee_hello_world
438[github_commits_0_1_0]: https://github.com/OP-TEE/optee_os/compare/b01047730e77127c23a36591643eeb8bb0487d68...999e4a6c0f64d3177fd3d0db234107b6fb860884
439[pr95]: https://github.com/OP-TEE/optee_os/issues/95
440[pr149]: https://github.com/OP-TEE/optee_os/issues/149
441[pr161]: https://github.com/OP-TEE/optee_os/issues/161
442
443*   Global Platform Device Internal Core API v1.1
444    *   [#230][pr230]: Persistent object corruption support (TEE_ERROR_CORRUPT_OBJECT/_2)
445    *   [#230][pr230]: Persistent object access support (TEE_ERROR_STORAGE_NOT_AVAILABLE/_2)
446