xref: /optee_os/CHANGELOG.md (revision db783ff867d44165bdb5b15f7324c7f5cd754911)
1# OP-TEE - version 3.2.0 (2018-07-04)
2
3- Link to the GitHub [release page][github_release_3_2_0].
4- Links to the [commits][github_commits_3_2_0] and
5[pull requests][github_pr_3_2_0] merged into this release.
6
7## Known issues
8
9* HiKey960: assertion in bget create_free_block() \[memalign() self-test\] ([#2414])
10* D02: assertion '!have_spinlock()' ([#2437])
11
12[github_commits_3_2_0]: https://github.com/OP-TEE/optee_os/compare/3.1.0...3.2.0
13[github_pr_3_2_0]: https://github.com/OP-TEE/optee_os/pulls?q=is%3Apr+is%3Amerged+base%3Amaster+merged%3A2018-04-13..2018-07-04
14[github_release_3_2_0]: https://github.com/OP-TEE/optee_os/releases/tag/3.2.0
15[#2414]: https://github.com/OP-TEE/optee_os/issues/2414
16[#2437]: https://github.com/OP-TEE/optee_os/issues/2437
17
18# OP-TEE - version 3.1.0 (2018-04-13)
19
20- Link to the GitHub [release page][github_release_3_1_0].
21- Links to the [commits][github_commits_3_1_0] and
22[pull requests][github_pr_3_1_0] merged into this release.
23
24[github_commits_3_1_0]: https://github.com/OP-TEE/optee_os/compare/3.0.0...3.1.0
25[github_pr_3_1_0]: https://github.com/OP-TEE/optee_os/pulls?q=is%3Apr+is%3Amerged+base%3Amaster+merged%3A2018-01-26..2018-04-13
26[github_release_3_1_0]: https://github.com/OP-TEE/optee_os/releases/tag/3.1.0
27
28# OP-TEE - version 3.0.0 (2018-01-26)
29
30[Link][github_commits_3_0_0] to a list of all commits between this release and
31the previous one (2.6.0).
32
33About backwards compatibility: Trusted Applications built with OP-TEE 2.5.0 or
34earlier will not run properly with a *debug* build of this release due
35to commit [0e1c6e8e][commit_0e1c6e8e] ("Dump call stack on TA panic").
36Non-debug builds are not affected.
37
38## New features
39
40* New supported platforms: Armada 3700 ([#1946]), Poplar ([#1999]), 64-bit
41  support for FSL ls1012ardb ([#1941]), i.MX6SX Sabreauto ([#1974]).
42* arm32: sm: init CNTVOFF ([#2052])
43* Debug/info/error traces: make output more compact ([#2011])
44* tzc380: implement new functions ([#1994])
45* Secure Data Path: add pseudo-TA to convert VA to PA (#1993])
46* Pager: use NEON AES GCM implementation ([#1959])
47* Crypto: add optimized AES GCM implementation using NEON ([#1949])
48* Add support for using secure storage for TA anti-rollback ([#1928])
49* Crypto: replace struct crypto_ops with function interface ([#1923],
50  [#1931])
51* aosp_optee.mk: define OPTEE_BIN ([#1922])
52* Add build option to allow concurrent execution of single-instance TAs
53  ([#1915])
54* Pager: support for address sanitizer ([#1856])
55* Pager: make memory between CFG_TEE_RAM_START and TEE load address usable by
56  pager ([#1826])
57
58## Bug fixes
59
60* Fix crash in tee_mmu_final() on TA loading error ([#2092])
61* LibTomCrypt: fix issue causing invalid output when using AES CTR with
62hardware acceleration (CFG_CRYPTO_WITH_CE) ([#2086])
63* pl310: fix cache sync ([#2035])
64* tzc380: do not write reserved bits ([#1994])
65* Fix potential double free in ta_open() ([#1970])
66* libfdt: fix undefined behaviour in fdt_offset_ptr() ([#1969])
67* imx_wdog: fix register access ([#1966])
68* Secure storage: fix potential memory leak after early return ([#1961])
69* LibTomCrypt: fix double free in dsa_import() ([#1963])
70* RPMB: fix TA independance issue in secure storage ([#1921])
71* RPMB: return TEE_ERROR_ACCESS_CONFLICT instead of panicking when a TA
72  attempts to create an existing persistent object without the overwrite flag
73  ([#1919])
74* PSCI: pass non-secure context to psci_system_suspend() ([#1916])
75* Fix "Argument list too long" during "make clean" ([#1897])
76
77## Security fixes
78
79* Mitigations and hardening against the Spectre and Meltdown vulnerabilities
80  (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754).
81
82## Known issues
83
84* Secure storage (REE FS): storage size not updated after
85TEE_TruncateObjectData() ([#2094])
86* Possible deadlock with CFG_WITH_PAGER=y when loading a TA and not enough
87page tables are available in pgt_cache ([#2080])
88
89## Tested on
90
91The release was tested successfully on the platforms listed below.
92
93<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
94* d02
95* hikey
96* hikey-hikey960
97* imx-mx6ulevk
98* imx-mx7dsabresd
99* marvell-armada7k8k
100* marvell-armada3700
101* mediatek-mt8173
102* rcar-salvator_m3
103* rockchip-rk322x
104* rpi3
105* sam
106* ti
107* vexpress-juno
108* vexpress-qemu_armv8a
109* vexpress-qemu_virt
110
111[commit_0e1c6e8e]: https://github.com/OP-TEE/optee_os/commit/0e1c6e8e
112[github_commits_3_0_0]: https://github.com/OP-TEE/optee_os/compare/2.6.0...3.0.0
113[#2092]: https://github.com/OP-TEE/optee_os/pull/2092
114[#2086]: https://github.com/OP-TEE/optee_os/pull/2086
115[#2094]: https://github.com/OP-TEE/optee_os/issues/2094
116[#2080]: https://github.com/OP-TEE/optee_os/issues/2080
117[#2052]: https://github.com/OP-TEE/optee_os/pull/2052
118[#2035]: https://github.com/OP-TEE/optee_os/pull/2035
119[#2011]: https://github.com/OP-TEE/optee_os/pull/2011
120[#1999]: https://github.com/OP-TEE/optee_os/pull/1999
121[#1994]: https://github.com/OP-TEE/optee_os/pull/1994
122[#1993]: https://github.com/OP-TEE/optee_os/pull/1993
123[#1974]: https://github.com/OP-TEE/optee_os/pull/1974
124[#1970]: https://github.com/OP-TEE/optee_os/pull/1970
125[#1969]: https://github.com/OP-TEE/optee_os/pull/1969
126[#1966]: https://github.com/OP-TEE/optee_os/pull/1966
127[#1963]: https://github.com/OP-TEE/optee_os/pull/1963
128[#1961]: https://github.com/OP-TEE/optee_os/pull/1961
129[#1959]: https://github.com/OP-TEE/optee_os/pull/1959
130[#1949]: https://github.com/OP-TEE/optee_os/pull/1949
131[#1946]: https://github.com/OP-TEE/optee_os/pull/1946
132[#1941]: https://github.com/OP-TEE/optee_os/pull/1941
133[#1931]: https://github.com/OP-TEE/optee_os/pull/1931
134[#1928]: https://github.com/OP-TEE/optee_os/pull/1928
135[#1923]: https://github.com/OP-TEE/optee_os/pull/1923
136[#1922]: https://github.com/OP-TEE/optee_os/pull/1922
137[#1921]: https://github.com/OP-TEE/optee_os/pull/1921
138[#1919]: https://github.com/OP-TEE/optee_os/pull/1919
139[#1916]: https://github.com/OP-TEE/optee_os/pull/1916
140[#1915]: https://github.com/OP-TEE/optee_os/pull/1915
141[#1897]: https://github.com/OP-TEE/optee_os/pull/1897
142[#1856]: https://github.com/OP-TEE/optee_os/pull/1856
143[#1826]: https://github.com/OP-TEE/optee_os/pull/1826
144
145# OP-TEE - version 2.6.0
146
147[Link][github_commits_2_6_0] to a list of all commits between this release and
148the previous one (2.5.0).
149
150## New features
151
152* New supported platforms: Atmel SAMA5 ([#1714]), HiSilicon HiKey960 ([#1684]),
153  Rockchip RK322X ([#1666]), NXP LS1043A-RDB/LS1046A-RDB ([#1787]), Marvell
154  Armada 70x0/80x0 ([#1807]).
155* Dynamic shared memory (non-contiguous, non-secure memory can be mapped into
156  Trusted Applications VA space) ([#1631])
157* Dump TA call stack on panic ([#1858])
158* i.MX: PSCI reset ([#1849])
159* plat-ti: AM43xx: suspend/resume support ([#1822])
160* QEMU SMP support ([#1820])
161* plat-ti: AM43xx: disable TRNG ([#1816])
162* plat-ti: enable Secure Data Path by default ([#1815])
163* Improve symbolize.py ([#1778], [#1767], [#1766])
164* Early TAs (TAs linked in tee.bin) ([#1733])
165* Suspend/resume framework for arm32 and imx7d support ([#1729])
166* RK322X PSCI version, features and suspend support ([#1720])
167* arm32: handle aborts in system mode ([#1703])
168* i.MX: add SNVS SRTC support ([#1700])
169* GCC7 support ([#1693])
170* Improve detection of programming errors in locking code ([#1671], [#1670])
171* Support TEE RAM size larger than page directory size ([#1669])
172
173## Removed features
174
175* Remove TUI code ([#1842])
176
177## Bug fixes
178
179* Add missing synchronization barrier in core_mmu_map_pages() ([#1827])
180* Secure storage: REE FS: fix bug in error path ([#1801])
181* ASAN bug fixes ([#1799])
182* Fix race in core_mmu_user_mapping_is_active() ([#1785])
183* libutee: printf() and puts() fixes, add putchar() ([#1759], [#1754])
184* arm32: GICv3: fix FIQ masking in IRQ/ABT/SVC/UND handlers ([#1748])
185* arm32: preserve r12 in native_intr_handler() ([#1682])
186* arm64: fix print_kernel_stack() ([#1664])
187* benchmark: fix core data-abort ([#1658])
188
189## Security fixes or enhancements
190
191* crypto: fix software PRNG weaknesses
192  ([OP-TEE-2017-0001][OP-TEE-2017-0001]) ([#1843])
193
194## Tested on
195
196The release was tested successfully on the platforms listed below.
197If a platform is not listed, it means the release was not tested on this
198platform.
199
200<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
201* d02
202* hikey
203* hikey-hikey960
204* imx-mx6ulevk
205* imx-mx7dsabresd
206* ls-ls1021a??? (single core)
207* ls-ls1043ardb
208* ls-ls1046ardb
209* mediatek-mt8173
210* rcar
211* rockchip-rk322x
212* rpi3
213* sam
214* stm-b2260
215* stm-cannes
216* ti-???
217* vexpress-fvp
218* vexpress-juno
219* vexpress-qemu_armv8a
220* vexpress-qemu_virt
221
222[github_commits_2_6_0]: https://github.com/OP-TEE/optee_os/compare/2.5.0...2.6.0
223[#1858]: https://github.com/OP-TEE/optee_os/issues/1858
224[#1849]: https://github.com/OP-TEE/optee_os/issues/1849
225[#1843]: https://github.com/OP-TEE/optee_os/issues/1843
226[#1842]: https://github.com/OP-TEE/optee_os/issues/1842
227[#1827]: https://github.com/OP-TEE/optee_os/issues/1827
228[#1822]: https://github.com/OP-TEE/optee_os/issues/1822
229[#1820]: https://github.com/OP-TEE/optee_os/issues/1820
230[#1816]: https://github.com/OP-TEE/optee_os/issues/1816
231[#1815]: https://github.com/OP-TEE/optee_os/issues/1815
232[#1807]: https://github.com/OP-TEE/optee_os/issues/1807
233[#1801]: https://github.com/OP-TEE/optee_os/issues/1801
234[#1799]: https://github.com/OP-TEE/optee_os/issues/1799
235[#1787]: https://github.com/OP-TEE/optee_os/issues/1787
236[#1785]: https://github.com/OP-TEE/optee_os/issues/1785
237[#1778]: https://github.com/OP-TEE/optee_os/issues/1778
238[#1767]: https://github.com/OP-TEE/optee_os/issues/1767
239[#1766]: https://github.com/OP-TEE/optee_os/issues/1766
240[#1759]: https://github.com/OP-TEE/optee_os/issues/1759
241[#1754]: https://github.com/OP-TEE/optee_os/issues/1754
242[#1748]: https://github.com/OP-TEE/optee_os/issues/1748
243[#1733]: https://github.com/OP-TEE/optee_os/issues/1733
244[#1729]: https://github.com/OP-TEE/optee_os/issues/1729
245[#1720]: https://github.com/OP-TEE/optee_os/issues/1720
246[#1714]: https://github.com/OP-TEE/optee_os/issues/1714
247[#1703]: https://github.com/OP-TEE/optee_os/issues/1703
248[#1700]: https://github.com/OP-TEE/optee_os/issues/1700
249[#1693]: https://github.com/OP-TEE/optee_os/issues/1693
250[#1684]: https://github.com/OP-TEE/optee_os/issues/1684
251[#1682]: https://github.com/OP-TEE/optee_os/issues/1682
252[#1671]: https://github.com/OP-TEE/optee_os/issues/1671
253[#1670]: https://github.com/OP-TEE/optee_os/issues/1670
254[#1669]: https://github.com/OP-TEE/optee_os/issues/1669
255[#1666]: https://github.com/OP-TEE/optee_os/issues/1666
256[#1664]: https://github.com/OP-TEE/optee_os/issues/1664
257[#1658]: https://github.com/OP-TEE/optee_os/issues/1658
258[#1631]: https://github.com/OP-TEE/optee_os/issues/1631
259[OP-TEE-2017-0001]: https://www.op-tee.org/security-advisories/
260
261# OP-TEE - version 2.5.0
262
263[Link][github_commits_2_5_0] to a list of all commits between this release and
264the previous one (2.4.0).
265
266## New features
267
268* New supported platform: i.MX7D ([#1639])
269* Secure storage: anti-rollback protection for REE FS using RPMB FS ([#1630])
270* Assign non-secure DDR configuration from DT if CFG_DT=y ([#1623])
271* Add new image format: split image into three separate binaries suitable for
272  upcoming ARM Trusted Firmware ([#1589]).
273* Make alignment check configurable ([#1586])
274* drivers: add TZC380 driver ([#1578])
275* plat-imx: PSCI CPU off ([#1577])
276* 64-bit paging on QEMU v8 and HiKey ([#1575], [#1592])
277* Benchmark framework ([#1365])
278* Dump call stack of user TAs on abort ([#1552])
279* plat-hikey: enable Secure Data Path ([#1440])
280* Add interface to load and decrypt/authenticate user TAs ([#1513])
281* plat-ti: add secure paging support ([#1493])
282* plat-ti: add OTP hardware key support ([#1492])
283* Support ARM GICv3 ([#1465])
284
285## Removed features
286
287* stm-orly2 is not supported anymore ([#1650])
288* Remove secure storage based on SQL FS (`CFG_SQL_FS=y`) ([#1490])
289* Remove support for mapping user TAs with 1 MiB or 2 MiB granularity
290  (`CFG_SMALL_PAGE_USER_TA=n`) ([#1559]). TAs are always mapped using small
291  pages.
292
293## Bug fixes
294
295* Reduce size of non-pageable code ([#1621])
296* Ignore `TA_FLAG_MULTI_SESSION` and `TA_FLAG_INSTANCE_KEEP_ALIVE` when
297  `TA_FLAG_SINGLE_INSTANCE` is not set ([#1574])
298* libutee: remove buffering for AES GCM (PR#1573) and AES CTR ([#1580])
299* Fix ROUNDUP()/ROUNDDOWN() macros ([#1519])
300* Do not touch other bits in GICD_CTLR ([#1508])
301* Fix build issue with `DEBUG=y` and `CFG_TEE_CORE_LOG_LEVEL=0` ([#1502])
302* crypto: do not restrict hash size when algorithm is ECDSA ([#1497])
303
304## Security fixes or enhancements
305
306- crypto: fix RSA key leakage after fault injection attack
307  ([OP-TEE-2016-0003][OP-TEE-2016-0003])  ([#1610])
308* crypto: fix RSA key leakage after side channel attack
309  ([OP-TEE-2016-0002][OP-TEE-2016-0002]) ([#1610])
310* Make pager aliased pages not always writable ([#1551])
311* Support for no-exec RO and RW data ([#1459], [#1550])
312
313## New issues
314
315* armv7: some platform-specific code (`plat_cpu_reset_early()`) overwrites
316SCTLR bits configured by generic code. This affects alignment checks (`SCTLR.A`)
317and write-implies-no-exec (`SCTLR.WXN`, `SCTLR.UWXN`), which can therefore not
318be configured via the compile-time `CFG_` variables.
319* armv7: plat-imx: Cortex-A9 cores should enable branch prediction (`SCLTR.Z`)
320for improved performance.
321* [#1656] qemu_armv8a: init hangs when secure data path and pager are both
322  enabled.
323
324## Tested on
325
326In the list below, _standard_ means that the `xtest` program passed with
327its default configuration, while _extended_ means it was run successfully
328with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
329v1.1.0.4.
330
331If a platform is not listed, it means the release was not tested on this
332platform.
333
334<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
335* d02: extended
336* hikey: extended
337* imx-mx6ulevk: standard
338* imx-mx6ullevk: standard
339* imx-mx7dsabresd: standard
340* ls-ls1021atwr: standard
341* mediatek-mt8173: standard
342* rcar-h3: standard
343* rpi3: standard
344* stm-b2260: extended
345* stm-cannes: extended
346* ti-am43xx: standard
347* ti-am57xx: standard
348* ti-dra7xx: standard
349* vexpress-fvp: standard
350* vexpress-juno: standard
351* vexpress-qemu_armv8a: standard
352* vexpress-qemu_virt: standard
353
354[github_commits_2_5_0]: https://github.com/OP-TEE/optee_os/compare/2.4.0...2.5.0-rc1
355[#1656]: https://github.com/OP-TEE/optee_os/issues/1656
356[#1650]: https://github.com/OP-TEE/optee_os/pull/1650
357[#1639]: https://github.com/OP-TEE/optee_os/pull/1639
358[#1630]: https://github.com/OP-TEE/optee_os/pull/1630
359[#1623]: https://github.com/OP-TEE/optee_os/pull/1623
360[#1621]: https://github.com/OP-TEE/optee_os/pull/1621
361[#1610]: https://github.com/OP-TEE/optee_os/pull/1610
362[#1592]: https://github.com/OP-TEE/optee_os/pull/1592
363[#1589]: https://github.com/OP-TEE/optee_os/pull/1589
364[#1586]: https://github.com/OP-TEE/optee_os/pull/1586
365[#1580]: https://github.com/OP-TEE/optee_os/pull/1580
366[#1578]: https://github.com/OP-TEE/optee_os/pull/1578
367[#1577]: https://github.com/OP-TEE/optee_os/pull/1577
368[#1574]: https://github.com/OP-TEE/optee_os/pull/1574
369[#1559]: https://github.com/OP-TEE/optee_os/pull/1559
370[#1551]: https://github.com/OP-TEE/optee_os/pull/1551
371[#1550]: https://github.com/OP-TEE/optee_os/pull/1550
372[#1519]: https://github.com/OP-TEE/optee_os/pull/1519
373[#1502]: https://github.com/OP-TEE/optee_os/pull/1502
374[#1365]: https://github.com/OP-TEE/optee_os/pull/1365
375[#1552]: https://github.com/OP-TEE/optee_os/pull/1552
376[#1513]: https://github.com/OP-TEE/optee_os/pull/1513
377[#1508]: https://github.com/OP-TEE/optee_os/pull/1508
378[#1493]: https://github.com/OP-TEE/optee_os/pull/1493
379[#1497]: https://github.com/OP-TEE/optee_os/pull/1497
380[#1492]: https://github.com/OP-TEE/optee_os/pull/1492
381[#1490]: https://github.com/OP-TEE/optee_os/pull/1490
382[#1465]: https://github.com/OP-TEE/optee_os/pull/1465
383[#1459]: https://github.com/OP-TEE/optee_os/pull/1459
384[#1440]: https://github.com/OP-TEE/optee_os/pull/1440
385[OP-TEE-2016-0003]: https://www.op-tee.org/security-advisories/
386[OP-TEE-2016-0002]: https://www.op-tee.org/security-advisories/
387
388# OP-TEE - version 2.4.0
389
390[Link][github_commits_2_4_0] to a list of all commits between this release and
391the previous one (2.3.0).
392
393Please note: this release is API-compatible with the previous one, but the
394Secure Storage internal format for the REE and SQL FS is not compatible due to
395commits [a238b74][commit_a238b74] ("core: REE FS: use the new hash tree
396interface") and [44e900e][commit_44e900e] ("core: SQL FS: use the new hash tree
397interface").
398
399## New features
400
401* Add porting guidelines
402
403* Add support for Secure Data Path which allows Client and Trusted Applications
404  to share references to secure memory
405
406* New supported platform: Texas Instruments AM57xx (`PLATFORM=ti-am57xx`)
407
408* ARMv7-A: add support for platform services in secure monitor and add these
409  services for the DRA7xx platform
410
411* SPI framework and PL022 driver cleanup and improvements
412
413* Use CNTPCT (when available) to add entropy to the software PRNG
414
415* Add GlobalPlatform Socket API for UDP and TCP (IPv4 and IPv6)
416
417* DRA7: add TRNG driver, enable GICv2 driver
418
419* Support load address larger than 4G
420
421* libutee: preserve error code when calling TEE_Panic() for easier
422  troubleshooting
423
424* Support TA profiling with gprof (-pg compiler switch)
425
426* Optimize the ELF loader for TAs when pager is enabled
427
428* Update documentation
429
430* Add paged secure shared memory that can be transferred between TAs as
431  needed
432
433* Introduce MOBJ abstraction
434
435* i.MX6: add PSCI "on" function
436
437* arm32: introduce PSCI framework
438
439## Bug fixes
440
441* Secure storage: improve integrity checking of the REE and SQL filesystems by
442  adding a hash tree on the internal data structures. Any external modification
443  is detected, except full rollback. Fixes [#1188][issue1188].
444
445* The linux driver will set the 'privileged' flag (TEE_GEN_CAP_PRIVILEGED) on
446  the device intended for use by tee-supplicant. Fixes [#1199][issue1199].
447
448* RPMB: don't try to program the RPMB key by default
449
450* Fix "make clean" error cases
451
452* Fix issue when resetting persistent storage enumerator [#1332][issue1332]
453
454* Fix TA panic when doing AES CTS with specific buffer sizes
455  [#1203][issue1203].
456
457## Known issues
458
459* On RPi3 xtest sometimes stall (rcu_sched self-detected stall on CPU) [#1353][issue1353]
460* For multi-core PSCI support is to be added for ls1021atwr in OP-TEE.
461* USB keyboard cannot be used to stop the u-boot timeout ([build issue131]).
462* Travis service (build.git) seems unstable from time to time.
463
464## Tested on
465
466In the list below, _standard_ means that the `xtest` program passed with
467its default configuration, while _extended_ means it was run successfully
468with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
469v1.1.0.4.
470
471If a platform is not listed, it means the release was not tested on this
472platform.
473
474<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
475* d02: extended
476* hikey: extended
477* imx-mx6ulevk: standard
478* ls-ls1021atwr: standard (single core)
479* mediatek-mt8173: standard
480* rcar-h3: standard
481* rpi3: standard
482* stm-b2260: extended
483* ti-dra7xx: standard
484* vexpress-fvp: standard
485* vexpress-juno: standard
486* vexpress-qemu_armv8a: standard
487* vexpress-qemu_virt: standard
488* zynqmp-zc1751_dc1: standard
489* zynqmp-zc1751_dc2: standard
490* zynqmp-zcu102: standard
491
492[github_commits_2_4_0]: https://github.com/OP-TEE/optee_os/compare/2.3.0...2.4.0
493[issue1332]: https://github.com/OP-TEE/optee_os/issues/1332
494[issue1353]: https://github.com/OP-TEE/optee_os/issues/1353
495[build issue131]: https://github.com/OP-TEE/build/issues/131
496[commit_a238b74]: https://github.com/OP-TEE/optee_os/commit/a238b744b1b3
497[commit_44e900e]: https://github.com/OP-TEE/optee_os/commit/44e900eabfc1
498
499# OP-TEE - version 2.3.0
500
501[Link][github_commits_2_3_0] to a list of all commits between this release and
502the previous one (2.2.0).
503
504Please note: this release is API-compatible with the previous one, but the
505Secure Storage internal format for the REE FS is not compatible due to commit
506[361fb3e][commit_361fb3e] ("core: REE FS: use a single file per object").
507
508[commit_361fb3e]: https://github.com/OP-TEE/optee_os/commit/361fb3e
509
510## New features
511
512* New supported platform: Xilinx Zynq 7000 ZC702 (`PLATFORM=zynq7k-zc702`)
513
514* Add debug assertions to spinlocks and mutexes
515
516* Add more CP15 register access macros for Cortex-A9
517
518* ARMv7-A: redesign secure monitor to make it easier to register services
519
520* ARMv7-A: cleanup boot arguments
521
522* libutee: extend `TEE_CheckMemoryAccessRights()` with
523  `TEE_MEMORY_ACCESS_SECURE` and `TEE_MEMORY_ACCESS_NONSECURE`
524
525* plat-hikey: enable SPI by default and add sample test code
526
527* Consider `CFLAGS_ta_arm64` and `CFLAGS_ta_arm32` when building TAs
528
529* Secure storage refactoring
530  - Simplify interface with tee-supplicant. Minimize round trips with normal
531    world, especially by adding a cache for FS RPC payload data.
532  - REE FS: use a single file per object, remove block cache.
533
534* Print call stack in panic()
535
536## Bug fixes
537
538* Fix UUID encoding when communicating with normal world (use big endian
539  mode instead of native endianness). Related to this, the string format
540  for UUIDs has changed in tee-supplicant, so that TA file names now follow
541  the format defined in RFC4122 (a missing hyphen was added). The old format
542  is still supported, but deprecated, and will likely be removed with the
543  next major release.
544
545* Drop write permission to non-writable ELF segments after TA loading is
546  complete.
547
548* mm: fix confusing memory mapping debug traces
549
550* plat-ti: fix issues with MMU mapping
551
552* crypto: fix clearing of big numbers
553
554* build: allow spaces and double quotes in CFG_ variables
555
556* mm: use paddr_t to support both 32- and 64-bit architectures properly.
557  Resolves 32-bit truncation error when pool is at top of 32 bit address
558  space on 64-bit architecture.
559
560* plat-stm: support pager. Fix pager on ARMv7-A SMP boards.
561
562* Fix debug output of Trusted Applications (remove "ERROR: TEE-CORE:" prefix)
563
564* Do not consider TA memref parameters as TA private memory
565
566* crypto: fix `cipher_final()` which would not call `cbc_done()` for CBC_MAC
567  algorithms
568
569* fix for 16-way PL310
570
571* arm32: fix call stack unwinding (`print_stack()`)
572
573* arm32: fix spinlock assembly code
574
575* plat-stm, plat-imx: fix SCR initalization
576
577* Fix user L1 MMU entries calculation (non-LPAE), allowing TTBCR.N values
578  other than 7.
579
580* mtk-mt8173: fix panic caused by incorrect size of SHMEM
581
582* plat-stm: fix RNG driver (non-flat mapping)
583
584## Known issues
585
586* New issues open on GitHub
587  * [#1203][issue1203] AES-CTS mode will fail when inlen=0x100, in_incr=0x80
588  * [#1199][issue1199] Both tee and teepriv reported GlobalPlatform compliant
589  * [#1188][issue1188] Secure storage (SQL FS and REE FS): blocks not tied to
590    current meta header
591  * [#1172][issue1172] paddr_t should be larger than 32 bits when
592    CFG_WITH_LPAE is enabled
593
594## Tested on
595
596In the list below, _standard_ means that the `xtest` program passed with
597its default configuration, while _extended_ means it was run successfully
598with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
599v1.1.0.4.
600
601If a platform is not listed, it means the release was not tested on this
602platform.
603
604<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
605* d02: extended
606* hikey: extended
607* imx-mx6ulevk: standard
608* ls-ls1021atwr: standard
609* mediatek-mt8173: standard
610* rcar-h3: standard
611* rpi3: standard
612* stm-b2260: extended
613* stm-cannes: extended
614* ti-dra7xx: standard
615* vexpress-fvp: standard
616* vexpress-juno: standard
617* vexpress-qemu_armv8a: standard
618* vexpress-qemu_virt: extended
619* zynqmp-zcu102: standard
620
621[github_commits_2_3_0]: https://github.com/OP-TEE/optee_os/compare/2.2.0...2.3.0
622[issue1172]: https://github.com/OP-TEE/optee_os/issues/1172
623[issue1188]: https://github.com/OP-TEE/optee_os/issues/1188
624[issue1199]: https://github.com/OP-TEE/optee_os/issues/1199
625[issue1203]: https://github.com/OP-TEE/optee_os/issues/1203
626
627# OP-TEE - version 2.2.0
628
629[Link][github_commits_2_2_0] to a list of all commits between this release and
630the previous one (2.1.0).
631
632Please note: this release is API-compatible with the previous one, but the
633Secure Storage internal format is not compatible due to commit
634[fde4a75][commit_fde4a75] ("storage: encrypt the FEK with a TA-specific key").
635
636[commit_fde4a75]: https://github.com/OP-TEE/optee_os/commit/fde4a75
637
638## New features
639
640* New supported platforms:
641	* Freescale i.MX6 Quad SABRE Lite & SD
642	* HiSilicon D02
643	* Raspberry Pi3
644	* Renesas RCAR H3
645	* STMicroelectronics b2260 - h410
646
647* Pager: Support paging of read/write pages by encrypting them with AES-GCM.
648  Support paging of user TAs. Add global setting for TZSRAM size
649  (CFG_CORE_TZSRAM_EMUL_SIZE), defaults to 300K.
650
651* Support for more than 8 CPU cores
652
653* Added SPI framework and PL022 driver
654
655* GPIO: framework supports multiple instances, PL061 driver now has get/set
656  interrupt and mode control functions
657
658* Secure storage: Encrypt the File Encryption Key with a TA-specific key for
659  better TA isolation. Add build-time and run-time support for multiple storage
660  backends. Add SQLite backend.
661
662* Trusted User Interface: some code is introduced to support the implementation
663  of TUI. This includes: a generic framebuffer driver, display and serial
664  abstractions, and drivers for PL111 (LCD) / PL050 (KMI) / TZC400 and PS2
665  mouse.
666
667* AES acceleration using ARMv8-A Cryptographic Extensions instructions is
668  now supported in AArch32 mode
669
670* Add support for GCC flags: -fsanitize=undefined and -fsanitize=kernel-address
671
672* Use a global setting for core heap size (CFG_CORE_HEAP_SIZE), 64K by default.
673
674* Add macros to unwind and print the call stack of TEE core
675
676* Libtomcrypt: sync with the latest `develop` branch.
677
678* The Trusted Application SDK (ta_dev_kit.mk) can produce libraries (.a)
679
680* Rework assertions and TEE core panics and properly honor NDEBUG
681
682## Bug fixes
683
684* Fix incorrect algorithm passed to cipher.final()
685
686* scripts: support Python 2.x and 3.x
687
688* Secure storage: Add proper locking to support concurrent access. Fix sign
689  extension bug with offset parameter of syscall storage_obj_seek which could
690  cause errors in Aarch32 mode. Fix reading beyond end of file.
691
692* Aarch64: mask all maskable exceptions before doing a normal return from call.
693
694* Device Tree: add no-map property to OP-TEE node in reserved-memory.
695
696* LibTomcrypt: fix CVE-2016-6129
697
698## Known issues
699
700* New issues open on GitHub
701  * [#1093][issue1093] rcar-h3: xtest 6010 hangs
702  * [#1092][issue1092] rcar-h3: xtest 4010 fails
703  * [#1081][issue1081] Bad mapping of TA secure memref parameters
704  * [#1071][issue1071] __data_end may not correctly represent text start position when using CFG_WITH_PAGER
705  * [#1069][issue1069] armv7/Aarch32: crash in stack unwind (DPRINT_STACK())
706
707## Tested on
708
709In the list below, _standard_ means that the `xtest` program passed with
710its default configuration, while _extended_ means it was run successfully
711with the additional GlobalPlatform™ TEE Initial Configuration Test Suite
712v1.1.0.4.
713
714If a platform is not listed, it means the release was not tested on this
715platform.
716
717<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
718* d02: extended
719* hikey: extended
720* imx-mx6qsabrelite: standard
721* imx-mx6qsabresd: standard
722* rcar-h3: standard, pass except issues [#1092][issue1092] and [#1093][issue1093]
723* rpi3: standard
724* stm-b2260: standard
725* stm-cannes: standard
726* ti-dra7xx: standard
727* vexpress-fvp: standard
728* vexpress-juno: standard
729* vexpress-qemu_armv8a: standard
730* vexpress-qemu_virt: extended
731* zynqmp-zcu102: standard
732
733[github_commits_2_2_0]: https://github.com/OP-TEE/optee_os/compare/2.1.0...2.2.0
734[issue1081]: https://github.com/OP-TEE/optee_os/issues/1081
735[issue1071]: https://github.com/OP-TEE/optee_os/issues/1071
736[issue1069]: https://github.com/OP-TEE/optee_os/issues/1069
737[issue1092]: https://github.com/OP-TEE/optee_os/issues/1092
738[issue1093]: https://github.com/OP-TEE/optee_os/issues/1093
739
740# OP-TEE - version 2.1.0
741
742## New features
743
744* New supported platforms:
745	* Xilinx Zynq UltraScale+ MPSOC
746	* Spreadtrum SC9860
747
748* GCC5 support
749
750* Non Linear Mapping support: In OP-TEE kernel mode, the physical to virtual
751  addresses was linear until this release, meaning the virtual addresses
752  were equal to the physical addresses. This is no more the case in this
753  release.
754
755* Font rendering routines have been introduced in order to ease an
756  implementation of Trusted UI.
757
758* File Storage: Possibility to use the normal world filesystem and the RPMB
759  implementations simultaneously.
760
761* AOSP: There is a [local manifest][aosp_local_manifest] to build OP-TEE into an AOSP build, running on HiKey.
762  Please refer to the README in that repo for instructions.
763
764* OpenEmbedded: In addition to the makefile-based build described in the optee_os README, there is an
765  [OpenEmbedded-based build][oe_build] that supports Qemu (32-bit), FVP (64-bit), and HiKey (64-bit).
766  Please refer to the README in that repo for instructions.
767
768* [Link][github_commits_2_1_0] to a list of all commits between this and
769  previous release.
770
771
772## Tested on
773Definitions:
774
775| Type | Meaning |
776| ---- | ------- |
777| Standard tests | The [optee_test][optee_test] project. |
778| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
779
780*	ARM Juno Board (vexpress-juno), standard.
781*	Foundation Models (vexpress-fvp), standard tests + extended tests,
782	using FVP ARM V8 Foundation Platformr0p0 (platform build 10.0.37)
783*	FSL i.MX6 UltraLite EVK (imx), standard.
784*	FSL ls1021a (ls-ls1021atwr), standard tests.
785*	HiKey (hikey), standard + extended tests.
786*	QEMU (vexpress-qemu), standard + extended tests.
787*	Xilinx Zynq UltraScale+ MPSOC, standard tests
788
789Note that the following platform has not been tested:
790*	MTK8173-EVB (mediatek-mt8173)
791
792
793## Known issues
794* Issue(s) open on GitHub
795  * [#868][pr868]: python-wand font generation sometimes times out
796  * [#863][pr863]: "double free or corruption" error when building optee_os
797  * [#858][pr858]: UUIDs in binary format have wrong endinanness
798  * [#857][pr857]: Formatting of UUIDs is incorrect
799  * [#847][pr847]: optee_os panic(TEE-CORE: Assertion)
800  * [#838][pr838]: TUI font rendering is _very_ slow
801  * [#814][pr814]: Persistent objects : save informations after close
802  * [#665][pr665]: xtest 1013 stalled on HiKey when log levels are 4 and optee_os is on its own UART
803  * [#506][pr506]: tee-supplicant panic & ta panic
804
805[github_commits_2_1_0]: https://github.com/OP-TEE/optee_os/compare/2.0.0...2.1.0
806[pr868]: https://github.com/OP-TEE/optee_os/issues/868
807[pr863]: https://github.com/OP-TEE/optee_os/issues/863
808[pr858]: https://github.com/OP-TEE/optee_os/issues/858
809[pr857]: https://github.com/OP-TEE/optee_os/issues/857
810[pr847]: https://github.com/OP-TEE/optee_os/issues/847
811[pr838]: https://github.com/OP-TEE/optee_os/issues/838
812[pr814]: https://github.com/OP-TEE/optee_os/issues/814
813[pr665]: https://github.com/OP-TEE/optee_os/issues/665
814[aosp_local_manifest]: https://github.com/linaro-swg/optee_android_manifest
815[oe_build]: https://github.com/linaro-swg/oe-optee
816
817# OP-TEE - version 2.0.0
818
819## New features
820
821* Generic driver: A new generic TEE driver is in the process of being
822  [upstreamed][gendrv_v9].
823  In this release, [OP-TEE/optee_linuxdriver][optee_linuxdriver] is no more used.
824  Instead, linux v4.5 is being patched using the proposed Generic TEE Driver,
825  as it can be found in [https://github.com/linaro-swg/linux/tree/optee][linux_optee]
826
827* RPMB support: Secure Storage can now use Replay Protected Memory Block (RPMB) partition
828  of an eMMC device. Check the [full documentation][rpmb_doc]
829
830* Hard-float ABI is now available.
831
832* [Link][github_commits_2_0_0] to a list of all commits between this and
833  previous release.
834
835
836## Tested on
837Definitions:
838
839| Type | Meaning |
840| ---- | ------- |
841| Standard tests | The [optee_test][optee_test] project. |
842| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
843
844*	ARM Juno Board (vexpress-juno), standard.
845*	Foundation Models (vexpress-fvp), standard tests + extended tests,
846	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
847*	FSL ls1021a (ls-ls1021atwr), standard.
848*	HiKey (hikey), standard.
849*	MTK8173-EVB (mediatek-mt8173), standard.
850*	QEMU (vexpress-qemu), standard + extended tests.
851*	STM Cannes (stm-cannes), standard + extended tests.
852
853## Known issues
854* Issue(s) open on GitHub
855  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
856  * [#506][pr506]: tee-supplicant panic & ta panic
857
858[github_commits_2_0_0]: https://github.com/OP-TEE/optee_os/compare/1.1.0...2.0.0
859[rpmb_doc]: https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage_rpmb.md
860[optee_linuxdriver]: https://github.com/OP-TEE/optee_linuxdriver
861[gendrv_v9]: https://lkml.org/lkml/2016/4/1/205
862[linux_optee]: https://github.com/linaro-swg/linux/tree/optee
863
864
865# OP-TEE - version 1.1.0
866
867
868## New features
869
870* Softfloat library: floating point support is now available in 32bits TA.
871
872* Support running 64-bits TA: on ARMv8-A platform, TA can be compiled in
873  AArch32 and/or in AArch64 in case the core is compiled in AArch64.
874  An example can be found in HiKey configuration file. Using the following
875  excerpt code, the user TA libraries are compiled in both AArch32 and
876  AArch64, and can be found in `out/arm-plat-hikey/export-ta_arm32` and
877  `out/arm-plat-hikey/export-ta_arm64`
878
879```
880    ta-targets = ta_arm32
881    ta-targets += ta_arm64
882```
883
884* Concurrent TA support: multiple TA can run in parallel on
885  several cores.
886
887* New tests added in xtest test suite: concurrent TA (xtest 1013),
888  floating point tests (xtest 1006 and os_test TA) and corruption
889  file storage (xtest 20000)
890
891* [Link][github_commits_1_1_0] to a list of all commits between this and
892  previous release.
893
894
895## Tested on
896Definitions:
897
898| Type | Meaning |
899| ---- | ------- |
900| Standard tests | The [optee_test][optee_test] project. |
901| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
902| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
903
904*	Foundation Models (vexpress-fvp), standard tests + extended tests,
905	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
906*	HiKey (hikey), standard + extended tests.
907*	MT8173 (mediatek), standard tests.
908*	QEMU (vexpress-qemu), standard + extended tests.
909*	STM Cannes (stm-cannes), standard + extended tests.
910
911## Known issues
912* Secure Storage is implemented, but note that anti-rollback protection
913  is not implemented yet.
914
915* Issue(s) open on GitHub
916  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
917  * [#296][pr296]: Connecting RPMB to the storage APIs.
918  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
919  * [#506][pr506]: tee-supplicant panic & ta panic
920
921[prld40]: https://github.com/OP-TEE/optee_linuxdriver/issues/40
922[pr506]: https://github.com/OP-TEE/optee_os/issues/506
923[github_commits_1_1_0]: https://github.com/OP-TEE/optee_os/compare/1.0.1...1.1.0
924
925
926
927# OP-TEE - version 1.0.0
928
929OP-TEE is now maintained by Linaro. Contributors do not need to
930sign a CLA anymore, but must follow the rules of the [DCO][DCO]
931(Developer Certificate of Origin) instead.
932
933
934## New features
935
936* Add hardware support for Texas Instruments DRA7xx, ARMv7 (plat-ti)
937
938* GlobalPlatform™ TEE Internal Core API Specification v1.1,
939  including ECC algorithms.
940
941* Secure Storage: Files stored by the REE are now encrypted. Operations
942  are made atomic in order to prevent inconsistencies in case of errors
943  during the storage operations. [Slides][LCStorage] describing the
944  Secure Storage have been presented at the Linaro Connect SFO15.
945
946* Change of format of the Trusted Applications: they follow a
947  [signed ELF format][elf]
948
949* Rework thread [synchronization][synchro] in optee_os.
950
951* Use of ARMv8 native cryptographic support.
952
953* [OP-TEE/optee_test][optee_test] test suite is released.
954
955* Introduce [OP-TEE/manifest][manifest] and [OP-TEE/build][build]
956  to setup and build QEMU, FVP, HiKey and Mediatek platforms. Setup scripts
957  that used to be in optee_os have been removed, except for Juno board.
958
959* [Link][github_commits_1_0_0] to a list of all commits between this and
960  previous release.
961
962
963## Tested on
964Definitions:
965
966| Type | Meaning |
967| ---- | ------- |
968| Standard tests | The [optee_test][optee_test] project. |
969| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
970| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
971
972*	ARM Juno Board (vexpress-juno), standard + extended tests.
973*	Foundation Models (vexpress-fvp), standard tests.
974*	HiKey (hikey), standard + extended tests.
975*	MT8173 (mediatek), standard tests.
976*	QEMU (vexpress-qemu), standard + extended tests.
977*	STM Cannes (stm-cannes), standard + extended tests.
978
979## Known issues
980* Secure Storage is implemented, but note that anti-rollback protection
981  is not implemented yet.
982
983* Issue(s) open on GitHub
984  * [#210][pr210]: libteec.so 32-bit does not communicate well
985    with 64-bit kernel module
986  * [#296][pr296]: Connecting RPMB to the storage APIs.
987  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
988  * [#494][pr494]: HiKey: xtest 7671 fails (1.0.0-rc2)
989
990[pr210]: https://github.com/OP-TEE/optee_os/issues/210
991[pr296]: https://github.com/OP-TEE/optee_os/issues/296
992[pr493]: https://github.com/OP-TEE/optee_os/issues/493
993[pr494]: https://github.com/OP-TEE/optee_os/issues/494
994[github_commits_1_0_0]: https://github.com/OP-TEE/optee_os/compare/0.3.0...1.0.0
995[DCO]: https://github.com/OP-TEE/optee_os/blob/master/Notice.md#contributions
996[LCStorage]: http://www.slideshare.net/linaroorg/sfo15503-secure-storage-in-optee
997[synchro]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#4-thread-handling
998[elf]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#format
999[optee_test]: https://github.com/OP-TEE/optee_test
1000[manifest]: https://github.com/OP-TEE/manifest
1001[build]: https://github.com/OP-TEE/build
1002
1003
1004
1005# OP-TEE - version 0.3.0
1006
1007## New features
1008
1009*   Add hardware support for
1010	*   Mediatek MT8173 Board, ARMv8-A (plat-mediatek)
1011	*   Hisilicon HiKey Board, ARMv8-A (plat-hikey)
1012*   AArch64 build of optee_os is now possible through the configuration `CFG_ARM64_core=y`
1013*	Secure Storage: Data can be encrypted prior to their storage in the non-secure.
1014	Build is configured using `CFG_ENC_FS=y`
1015*	A generic boot scheme can be used. Boot configuration is commonalized. This helps
1016	new board support. It is applied on plat-hikey, plat-vexpress, plat-mediatek, plat-stm
1017    and plat-vexpress.
1018
1019## Tested on
1020Definitions:
1021
1022| Type | Meaning |
1023| ---- | ------- |
1024| Standard tests | The optee_test project. |
1025| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
1026| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
1027
1028*	ARM Juno Board (vexpress-juno), standard tests.
1029*	Foundation Models (vexpress-fvp), standard tests.
1030*	HiKey (hikey), standard tests.
1031*	MT8173 (mediatek), standard tests.
1032*	QEMU (vexpress-qemu), standard + extended tests.
1033*	STM Cannes (stm-cannes), standard + extended tests.
1034
1035-------------------------------------------
1036
1037# OP-TEE - version 0.2.0
1038
1039## New features
1040
1041### Linux Driver Refactoring
1042
1043Linux Driver has been refactored. It is now split in two parts:
1044*	optee.ko, the generic Linux driver. It contains all functionality
1045	common to all backends.
1046*	optee_armtz.ko, a specific backend dedicated to the TrustZone optee.
1047	It depends on optee.ko.
1048
1049Loading the TrustZone optee linux driver module is now performed using
1050
1051    modprobe optee_armtz
1052
1053Thanks to the dependency between the generic and the backend modules, optee.ko is then automatically loaded.
1054
1055### Misc new features
1056* support PL310 lock down at TEE boot
1057* add 64bits support (division / print)
1058
1059## Tested on
1060Definitions:
1061
1062| Type | Meaning |
1063| ---- | ------- |
1064| Standard tests | The optee_test project. |
1065| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
1066| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
1067
1068*   ARM Juno Board (vexpress-juno), standard tests + extended tests.
1069
1070*   Foundation Models (vexpress-fvp), standard + extended tests.
1071
1072*   QEMU (vexpress-qemu), standard + extended tests.
1073
1074*   STM Cannes (stm-cannes), standard + extended tests.
1075
1076
1077## Issues resolved since last release
1078*	Fix user TA trace issue, in order each TA is able to select its own trace level
1079
1080
1081-------------------------------------------
1082# OP-TEE - version 0.1.0
1083
1084## New features
1085Below is a summary of the most important features added, but at the end you will
1086find a link that present you all commits between the current and previous
1087release tag.
1088
1089*   GlobalPlatform Client API v1.0 support.
1090
1091*   GlobalPlatform Internal API v1.0 support.
1092
1093*   GlobalPlatform Secure Elements v1.0 support.
1094
1095*   Add hardware support for
1096
1097    *   Allwinner A80, ARMv7-A.
1098
1099    *   ARM Juno Board, ARMv8-A.
1100
1101    *   Foundation Models, ARMv8-A.
1102
1103    *   Fast Models, ARMv8-A.
1104
1105    *   QEMU, ARMv7-A.
1106
1107    *   STM Cannes, ARMv7-A.
1108
1109    *   STM Orly2, ARMv7-A.
1110
1111*   Add LibTomCrypt as the default software cryptographic library.
1112
1113*   Add cryptographic abstraction layer in on secure side to ease the use of
1114    other cryptographic software libraries or adding support for hardware
1115    acceleration.
1116
1117*   Extended cryptographic API with support for HKDF, Concat KDF and PBKDF2.
1118
1119*   SHA-1 and SHA-256 ARMv8-A crypto extension implementation.
1120
1121*   Enabled paging support in OP-TEE OS.
1122
1123*   Add support for xtest (both standard and extended) in QEMU and FVP setup
1124    scripts.
1125
1126*   Add documentation for the OS design, cryptographic abstraction layer, secure
1127    elements design, the build system, GitHub usage, key derivation extensions,
1128    ARM-Trusted Firmware usage within OP-TEE and GlobalPlatform usage within
1129    OP-TEE.
1130
1131*   Integrate support for Travis CI.
1132
1133*   [Link][github_commits_0_1_0] to a list of all commits between this and
1134    previous release.
1135
1136
1137## Tested on
1138Definitions:
1139
1140| Type | Meaning |
1141| ---- | ------- |
1142| Standard tests | The optee_test project. |
1143| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.0.0. |
1144| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
1145
1146*   Allwinner A80 (plat-sunxi), hello world test.
1147
1148*   ARM Juno Board (vexpress-juno), standard tests.
1149
1150*   Foundation Models (plat-vexpress-fvp), standard + extended tests
1151
1152*   QEMU (plat-vexpress-qemu), standard + extended tests (and Secure Elements
1153    tested separately).
1154
1155*   STM Cannes (plat-stm-cannes), standard + extended tests.
1156
1157
1158## Issues resolved since last release
1159N/A since this is the first release tag on OP-TEE.
1160
1161
1162## Known issues
1163*   Storage is implemented, but not "Secure storage", meaning that a client
1164    needs to do encrypt files on their own before storing the files.
1165
1166*   Issue(s) open on GitHub
1167    *   [#95][pr95]: An error about building the test code of libtomcrypt.
1168
1169    *   [#149][pr149]: when testing optee os with arm trusted firmware (I
1170	utilized optee os tee.bin as bl32 image) on juno platform, I got an
1171        error.
1172
1173    *   [#161][pr161]: tee_svc_cryp.c lacks accessibility checks on
1174        user-supplied TEE_Attributes.
1175
1176[hello_world]: https://github.com/jenswi-linaro/lcu14_optee_hello_world
1177[github_commits_0_1_0]: https://github.com/OP-TEE/optee_os/compare/b01047730e77127c23a36591643eeb8bb0487d68...999e4a6c0f64d3177fd3d0db234107b6fb860884
1178[pr95]: https://github.com/OP-TEE/optee_os/issues/95
1179[pr149]: https://github.com/OP-TEE/optee_os/issues/149
1180[pr161]: https://github.com/OP-TEE/optee_os/issues/161
1181
1182*   Global Platform Device Internal Core API v1.1
1183    *   [#230][pr230]: Persistent object corruption support (TEE_ERROR_CORRUPT_OBJECT/_2)
1184    *   [#230][pr230]: Persistent object access support (TEE_ERROR_STORAGE_NOT_AVAILABLE/_2)
1185