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