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