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