xref: /optee_os/CHANGELOG.md (revision 94ee4938f7f544d07d11721a355f445c020663ca)
1*94ee4938SJerome Forissier# OP-TEE - version 3.0.0
2*94ee4938SJerome Forissier
3*94ee4938SJerome Forissier[Link][github_commits_3_0_0] to a list of all commits between this release and
4*94ee4938SJerome Forissierthe previous one (2.6.0).
5*94ee4938SJerome Forissier
6*94ee4938SJerome ForissierAbout backwards compatibility: Trusted Applications built with OP-TEE 2.5.0 or
7*94ee4938SJerome Forissierearlier will not run properly with a *debug* build of this release due
8*94ee4938SJerome Forissierto commit [0e1c6e8e][commit_0e1c6e8e] ("Dump call stack on TA panic").
9*94ee4938SJerome ForissierNon-debug builds are not affected.
10*94ee4938SJerome Forissier
11*94ee4938SJerome Forissier## New features
12*94ee4938SJerome Forissier
13*94ee4938SJerome Forissier* New supported platforms: Armada 3700 ([#1946]), Poplar ([#1999]), 64-bit
14*94ee4938SJerome Forissier  support for FSL ls1012ardb ([#1941]), i.MX6SX Sabreauto ([#1974]).
15*94ee4938SJerome Forissier* arm32: sm: init CNTVOFF ([#2052])
16*94ee4938SJerome Forissier* Debug/info/error traces: make output more compact ([#2011])
17*94ee4938SJerome Forissier* tzc380: implement new functions ([#1994])
18*94ee4938SJerome Forissier* Secure Data Path: add pseudo-TA to convert VA to PA (#1993])
19*94ee4938SJerome Forissier* Pager: use NEON AES GCM implementation ([#1959])
20*94ee4938SJerome Forissier* Crypto: add optimized AES GCM implementation using NEON ([#1949])
21*94ee4938SJerome Forissier* Add support for using secure storage for TA anti-rollback ([#1928])
22*94ee4938SJerome Forissier* Crypto: replace struct crypto_ops with function interface ([#1923],
23*94ee4938SJerome Forissier  [#1931])
24*94ee4938SJerome Forissier* aosp_optee.mk: define OPTEE_BIN ([#1922])
25*94ee4938SJerome Forissier* Add build option to allow concurrent execution of single-instance TAs
26*94ee4938SJerome Forissier  ([#1915])
27*94ee4938SJerome Forissier* Pager: support for address sanitizer ([#1856])
28*94ee4938SJerome Forissier* Pager: make memory between CFG_TEE_RAM_START and TEE load address usable by
29*94ee4938SJerome Forissier  pager ([#1826])
30*94ee4938SJerome Forissier
31*94ee4938SJerome Forissier## Bug fixes
32*94ee4938SJerome Forissier
33*94ee4938SJerome Forissier* Fix crash in tee_mmu_final() on TA loading error ([#2092])
34*94ee4938SJerome Forissier* LibTomCrypt: fix issue causing invalid output when using AES CTR with
35*94ee4938SJerome Forissierhardware acceleration (CFG_CRYPTO_WITH_CE) ([#2086])
36*94ee4938SJerome Forissier* pl310: fix cache sync ([#2035])
37*94ee4938SJerome Forissier* tzc380: do not write reserved bits ([#1994])
38*94ee4938SJerome Forissier* Fix potential double free in ta_open() ([#1970])
39*94ee4938SJerome Forissier* libfdt: fix undefined behaviour in fdt_offset_ptr() ([#1969])
40*94ee4938SJerome Forissier* imx_wdog: fix register access ([#1966])
41*94ee4938SJerome Forissier* Secure storage: fix potential memory leak after early return ([#1961])
42*94ee4938SJerome Forissier* LibTomCrypt: fix double free in dsa_import() ([#1963])
43*94ee4938SJerome Forissier* RPMB: fix TA independance issue in secure storage ([#1921])
44*94ee4938SJerome Forissier* RPMB: return TEE_ERROR_ACCESS_CONFLICT instead of panicking when a TA
45*94ee4938SJerome Forissier  attempts to create an existing persistent object without the overwrite flag
46*94ee4938SJerome Forissier  ([#1919])
47*94ee4938SJerome Forissier* PSCI: pass non-secure context to psci_system_suspend() ([#1916])
48*94ee4938SJerome Forissier* Fix "Argument list too long" during "make clean" ([#1897])
49*94ee4938SJerome Forissier
50*94ee4938SJerome Forissier## Security fixes
51*94ee4938SJerome Forissier
52*94ee4938SJerome Forissier* Mitigations and hardening against the Spectre and Meltdown vulnerabilities
53*94ee4938SJerome Forissier  (CVE-2017-5753, CVE-2017-5715, CVE-2017-5754).
54*94ee4938SJerome Forissier
55*94ee4938SJerome Forissier## Known issues
56*94ee4938SJerome Forissier
57*94ee4938SJerome Forissier* Secure storage (REE FS): storage size not updated after
58*94ee4938SJerome ForissierTEE_TruncateObjectData() ([#2094])
59*94ee4938SJerome Forissier* Possible deadlock with CFG_WITH_PAGER=y when loading a TA and not enough
60*94ee4938SJerome Forissierpage tables are available in pgt_cache ([#2080])
61*94ee4938SJerome Forissier
62*94ee4938SJerome Forissier## Tested on
63*94ee4938SJerome Forissier
64*94ee4938SJerome ForissierThe release was tested successfully on the platforms listed below.
65*94ee4938SJerome Forissier
66*94ee4938SJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
67*94ee4938SJerome Forissier* d02
68*94ee4938SJerome Forissier* hikey
69*94ee4938SJerome Forissier* hikey-hikey960
70*94ee4938SJerome Forissier* imx-mx6ulevk
71*94ee4938SJerome Forissier* imx-mx7dsabresd
72*94ee4938SJerome Forissier* marvell-armada7k8k
73*94ee4938SJerome Forissier* marvell-armada3700
74*94ee4938SJerome Forissier* mediatek-mt8173
75*94ee4938SJerome Forissier* rcar-salvator_m3
76*94ee4938SJerome Forissier* rockchip-rk322x
77*94ee4938SJerome Forissier* rpi3
78*94ee4938SJerome Forissier* sam
79*94ee4938SJerome Forissier* ti
80*94ee4938SJerome Forissier* vexpress-juno
81*94ee4938SJerome Forissier* vexpress-qemu_armv8a
82*94ee4938SJerome Forissier* vexpress-qemu_virt
83*94ee4938SJerome Forissier
84*94ee4938SJerome Forissier[commit_0e1c6e8e]: https://github.com/OP-TEE/optee_os/commit/0e1c6e8e
85*94ee4938SJerome Forissier[github_commits_3_0_0]: https://github.com/OP-TEE/optee_os/compare/2.6.0...3.0.0
86*94ee4938SJerome Forissier[#2092]: https://github.com/OP-TEE/optee_os/pull/2092
87*94ee4938SJerome Forissier[#2086]: https://github.com/OP-TEE/optee_os/pull/2086
88*94ee4938SJerome Forissier[#2094]: https://github.com/OP-TEE/optee_os/issues/2094
89*94ee4938SJerome Forissier[#2080]: https://github.com/OP-TEE/optee_os/issues/2080
90*94ee4938SJerome Forissier[#2052]: https://github.com/OP-TEE/optee_os/pull/2052
91*94ee4938SJerome Forissier[#2035]: https://github.com/OP-TEE/optee_os/pull/2035
92*94ee4938SJerome Forissier[#2011]: https://github.com/OP-TEE/optee_os/pull/2011
93*94ee4938SJerome Forissier[#1999]: https://github.com/OP-TEE/optee_os/pull/1999
94*94ee4938SJerome Forissier[#1994]: https://github.com/OP-TEE/optee_os/pull/1994
95*94ee4938SJerome Forissier[#1993]: https://github.com/OP-TEE/optee_os/pull/1993
96*94ee4938SJerome Forissier[#1974]: https://github.com/OP-TEE/optee_os/pull/1974
97*94ee4938SJerome Forissier[#1970]: https://github.com/OP-TEE/optee_os/pull/1970
98*94ee4938SJerome Forissier[#1969]: https://github.com/OP-TEE/optee_os/pull/1969
99*94ee4938SJerome Forissier[#1966]: https://github.com/OP-TEE/optee_os/pull/1966
100*94ee4938SJerome Forissier[#1963]: https://github.com/OP-TEE/optee_os/pull/1963
101*94ee4938SJerome Forissier[#1961]: https://github.com/OP-TEE/optee_os/pull/1961
102*94ee4938SJerome Forissier[#1959]: https://github.com/OP-TEE/optee_os/pull/1959
103*94ee4938SJerome Forissier[#1949]: https://github.com/OP-TEE/optee_os/pull/1949
104*94ee4938SJerome Forissier[#1946]: https://github.com/OP-TEE/optee_os/pull/1946
105*94ee4938SJerome Forissier[#1941]: https://github.com/OP-TEE/optee_os/pull/1941
106*94ee4938SJerome Forissier[#1931]: https://github.com/OP-TEE/optee_os/pull/1931
107*94ee4938SJerome Forissier[#1928]: https://github.com/OP-TEE/optee_os/pull/1928
108*94ee4938SJerome Forissier[#1923]: https://github.com/OP-TEE/optee_os/pull/1923
109*94ee4938SJerome Forissier[#1922]: https://github.com/OP-TEE/optee_os/pull/1922
110*94ee4938SJerome Forissier[#1921]: https://github.com/OP-TEE/optee_os/pull/1921
111*94ee4938SJerome Forissier[#1919]: https://github.com/OP-TEE/optee_os/pull/1919
112*94ee4938SJerome Forissier[#1916]: https://github.com/OP-TEE/optee_os/pull/1916
113*94ee4938SJerome Forissier[#1915]: https://github.com/OP-TEE/optee_os/pull/1915
114*94ee4938SJerome Forissier[#1897]: https://github.com/OP-TEE/optee_os/pull/1897
115*94ee4938SJerome Forissier[#1856]: https://github.com/OP-TEE/optee_os/pull/1856
116*94ee4938SJerome Forissier[#1826]: https://github.com/OP-TEE/optee_os/pull/1826
117*94ee4938SJerome Forissier
1186d57389fSJerome Forissier# OP-TEE - version 2.6.0
1196d57389fSJerome Forissier
1206d57389fSJerome Forissier[Link][github_commits_2_6_0] to a list of all commits between this release and
1216d57389fSJerome Forissierthe previous one (2.5.0).
1226d57389fSJerome Forissier
1236d57389fSJerome Forissier## New features
1246d57389fSJerome Forissier
1256d57389fSJerome Forissier* New supported platforms: Atmel SAMA5 ([#1714]), HiSilicon HiKey960 ([#1684]),
1266d57389fSJerome Forissier  Rockchip RK322X ([#1666]), NXP LS1043A-RDB/LS1046A-RDB ([#1787]), Marvell
1276d57389fSJerome Forissier  Armada 70x0/80x0 ([#1807]).
1286d57389fSJerome Forissier* Dynamic shared memory (non-contiguous, non-secure memory can be mapped into
1296d57389fSJerome Forissier  Trusted Applications VA space) ([#1631])
1306d57389fSJerome Forissier* Dump TA call stack on panic ([#1858])
1316d57389fSJerome Forissier* i.MX: PSCI reset ([#1849])
1326d57389fSJerome Forissier* plat-ti: AM43xx: suspend/resume support ([#1822])
1336d57389fSJerome Forissier* QEMU SMP support ([#1820])
1346d57389fSJerome Forissier* plat-ti: AM43xx: disable TRNG ([#1816])
1356d57389fSJerome Forissier* plat-ti: enable Secure Data Path by default ([#1815])
1366d57389fSJerome Forissier* Improve symbolize.py ([#1778], [#1767], [#1766])
1376d57389fSJerome Forissier* Early TAs (TAs linked in tee.bin) ([#1733])
1386d57389fSJerome Forissier* Suspend/resume framework for arm32 and imx7d support ([#1729])
1396d57389fSJerome Forissier* RK322X PSCI version, features and suspend support ([#1720])
1406d57389fSJerome Forissier* arm32: handle aborts in system mode ([#1703])
1416d57389fSJerome Forissier* i.MX: add SNVS SRTC support ([#1700])
1426d57389fSJerome Forissier* GCC7 support ([#1693])
1436d57389fSJerome Forissier* Improve detection of programming errors in locking code ([#1671], [#1670])
1446d57389fSJerome Forissier* Support TEE RAM size larger than page directory size ([#1669])
1456d57389fSJerome Forissier
1466d57389fSJerome Forissier## Removed features
1476d57389fSJerome Forissier
1486d57389fSJerome Forissier* Remove TUI code ([#1842])
1496d57389fSJerome Forissier
1506d57389fSJerome Forissier## Bug fixes
1516d57389fSJerome Forissier
1526d57389fSJerome Forissier* Add missing synchronization barrier in core_mmu_map_pages() ([#1827])
1536d57389fSJerome Forissier* Secure storage: REE FS: fix bug in error path ([#1801])
1546d57389fSJerome Forissier* ASAN bug fixes ([#1799])
1556d57389fSJerome Forissier* Fix race in core_mmu_user_mapping_is_active() ([#1785])
1566d57389fSJerome Forissier* libutee: printf() and puts() fixes, add putchar() ([#1759], [#1754])
1576d57389fSJerome Forissier* arm32: GICv3: fix FIQ masking in IRQ/ABT/SVC/UND handlers ([#1748])
1586d57389fSJerome Forissier* arm32: preserve r12 in native_intr_handler() ([#1682])
1596d57389fSJerome Forissier* arm64: fix print_kernel_stack() ([#1664])
1606d57389fSJerome Forissier* benchmark: fix core data-abort ([#1658])
1616d57389fSJerome Forissier
1626d57389fSJerome Forissier## Security fixes or enhancements
1636d57389fSJerome Forissier
1646d57389fSJerome Forissier* crypto: fix software PRNG weaknesses
1656d57389fSJerome Forissier  ([OP-TEE-2017-0001][OP-TEE-2017-0001]) ([#1843])
1666d57389fSJerome Forissier
1676d57389fSJerome Forissier## Tested on
1686d57389fSJerome Forissier
169*94ee4938SJerome ForissierThe release was tested successfully on the platforms listed below.
1706d57389fSJerome ForissierIf a platform is not listed, it means the release was not tested on this
1716d57389fSJerome Forissierplatform.
1726d57389fSJerome Forissier
1736d57389fSJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
1746d57389fSJerome Forissier* d02
1756d57389fSJerome Forissier* hikey
1766d57389fSJerome Forissier* hikey-hikey960
1776d57389fSJerome Forissier* imx-mx6ulevk
1786d57389fSJerome Forissier* imx-mx7dsabresd
1796d57389fSJerome Forissier* ls-ls1021a??? (single core)
1806d57389fSJerome Forissier* ls-ls1043ardb
1816d57389fSJerome Forissier* ls-ls1046ardb
1826d57389fSJerome Forissier* mediatek-mt8173
1836d57389fSJerome Forissier* rcar
1846d57389fSJerome Forissier* rockchip-rk322x
1856d57389fSJerome Forissier* rpi3
1866d57389fSJerome Forissier* sam
1876d57389fSJerome Forissier* stm-b2260
1886d57389fSJerome Forissier* stm-cannes
1896d57389fSJerome Forissier* ti-???
1906d57389fSJerome Forissier* vexpress-fvp
1916d57389fSJerome Forissier* vexpress-juno
1926d57389fSJerome Forissier* vexpress-qemu_armv8a
1936d57389fSJerome Forissier* vexpress-qemu_virt
1946d57389fSJerome Forissier
195*94ee4938SJerome Forissier[github_commits_2_6_0]: https://github.com/OP-TEE/optee_os/compare/2.5.0...2.6.0
1966d57389fSJerome Forissier[#1858]: https://github.com/OP-TEE/optee_os/issues/1858
1976d57389fSJerome Forissier[#1849]: https://github.com/OP-TEE/optee_os/issues/1849
1986d57389fSJerome Forissier[#1843]: https://github.com/OP-TEE/optee_os/issues/1843
1996d57389fSJerome Forissier[#1842]: https://github.com/OP-TEE/optee_os/issues/1842
2006d57389fSJerome Forissier[#1827]: https://github.com/OP-TEE/optee_os/issues/1827
2016d57389fSJerome Forissier[#1822]: https://github.com/OP-TEE/optee_os/issues/1822
2026d57389fSJerome Forissier[#1820]: https://github.com/OP-TEE/optee_os/issues/1820
2036d57389fSJerome Forissier[#1816]: https://github.com/OP-TEE/optee_os/issues/1816
2046d57389fSJerome Forissier[#1815]: https://github.com/OP-TEE/optee_os/issues/1815
2056d57389fSJerome Forissier[#1807]: https://github.com/OP-TEE/optee_os/issues/1807
2066d57389fSJerome Forissier[#1801]: https://github.com/OP-TEE/optee_os/issues/1801
2076d57389fSJerome Forissier[#1799]: https://github.com/OP-TEE/optee_os/issues/1799
2086d57389fSJerome Forissier[#1787]: https://github.com/OP-TEE/optee_os/issues/1787
2096d57389fSJerome Forissier[#1785]: https://github.com/OP-TEE/optee_os/issues/1785
2106d57389fSJerome Forissier[#1778]: https://github.com/OP-TEE/optee_os/issues/1778
2116d57389fSJerome Forissier[#1767]: https://github.com/OP-TEE/optee_os/issues/1767
2126d57389fSJerome Forissier[#1766]: https://github.com/OP-TEE/optee_os/issues/1766
2136d57389fSJerome Forissier[#1759]: https://github.com/OP-TEE/optee_os/issues/1759
2146d57389fSJerome Forissier[#1754]: https://github.com/OP-TEE/optee_os/issues/1754
2156d57389fSJerome Forissier[#1748]: https://github.com/OP-TEE/optee_os/issues/1748
2166d57389fSJerome Forissier[#1733]: https://github.com/OP-TEE/optee_os/issues/1733
2176d57389fSJerome Forissier[#1729]: https://github.com/OP-TEE/optee_os/issues/1729
2186d57389fSJerome Forissier[#1720]: https://github.com/OP-TEE/optee_os/issues/1720
2196d57389fSJerome Forissier[#1714]: https://github.com/OP-TEE/optee_os/issues/1714
2206d57389fSJerome Forissier[#1703]: https://github.com/OP-TEE/optee_os/issues/1703
2216d57389fSJerome Forissier[#1700]: https://github.com/OP-TEE/optee_os/issues/1700
2226d57389fSJerome Forissier[#1693]: https://github.com/OP-TEE/optee_os/issues/1693
2236d57389fSJerome Forissier[#1684]: https://github.com/OP-TEE/optee_os/issues/1684
2246d57389fSJerome Forissier[#1682]: https://github.com/OP-TEE/optee_os/issues/1682
2256d57389fSJerome Forissier[#1671]: https://github.com/OP-TEE/optee_os/issues/1671
2266d57389fSJerome Forissier[#1670]: https://github.com/OP-TEE/optee_os/issues/1670
2276d57389fSJerome Forissier[#1669]: https://github.com/OP-TEE/optee_os/issues/1669
2286d57389fSJerome Forissier[#1666]: https://github.com/OP-TEE/optee_os/issues/1666
2296d57389fSJerome Forissier[#1664]: https://github.com/OP-TEE/optee_os/issues/1664
2306d57389fSJerome Forissier[#1658]: https://github.com/OP-TEE/optee_os/issues/1658
2316d57389fSJerome Forissier[#1631]: https://github.com/OP-TEE/optee_os/issues/1631
2326d57389fSJerome Forissier[OP-TEE-2017-0001]: https://www.op-tee.org/security-advisories/
2336d57389fSJerome Forissier
2345d8aaa04SJerome Forissier# OP-TEE - version 2.5.0
2355d8aaa04SJerome Forissier
2365d8aaa04SJerome Forissier[Link][github_commits_2_5_0] to a list of all commits between this release and
2375d8aaa04SJerome Forissierthe previous one (2.4.0).
2385d8aaa04SJerome Forissier
2395d8aaa04SJerome Forissier## New features
2405d8aaa04SJerome Forissier
2415d8aaa04SJerome Forissier* New supported platform: i.MX7D ([#1639])
2425d8aaa04SJerome Forissier* Secure storage: anti-rollback protection for REE FS using RPMB FS ([#1630])
2435d8aaa04SJerome Forissier* Assign non-secure DDR configuration from DT if CFG_DT=y ([#1623])
2445d8aaa04SJerome Forissier* Add new image format: split image into three separate binaries suitable for
2455d8aaa04SJerome Forissier  upcoming ARM Trusted Firmware ([#1589]).
2465d8aaa04SJerome Forissier* Make alignment check configurable ([#1586])
2475d8aaa04SJerome Forissier* drivers: add TZC380 driver ([#1578])
2485d8aaa04SJerome Forissier* plat-imx: PSCI CPU off ([#1577])
2495d8aaa04SJerome Forissier* 64-bit paging on QEMU v8 and HiKey ([#1575], [#1592])
2505d8aaa04SJerome Forissier* Benchmark framework ([#1365])
2515d8aaa04SJerome Forissier* Dump call stack of user TAs on abort ([#1552])
2525d8aaa04SJerome Forissier* plat-hikey: enable Secure Data Path ([#1440])
2535d8aaa04SJerome Forissier* Add interface to load and decrypt/authenticate user TAs ([#1513])
2545d8aaa04SJerome Forissier* plat-ti: add secure paging support ([#1493])
2555d8aaa04SJerome Forissier* plat-ti: add OTP hardware key support ([#1492])
2565d8aaa04SJerome Forissier* Support ARM GICv3 ([#1465])
2575d8aaa04SJerome Forissier
2585d8aaa04SJerome Forissier## Removed features
2595d8aaa04SJerome Forissier
2605d8aaa04SJerome Forissier* stm-orly2 is not supported anymore ([#1650])
2615d8aaa04SJerome Forissier* Remove secure storage based on SQL FS (`CFG_SQL_FS=y`) ([#1490])
2625d8aaa04SJerome Forissier* Remove support for mapping user TAs with 1 MiB or 2 MiB granularity
2635d8aaa04SJerome Forissier  (`CFG_SMALL_PAGE_USER_TA=n`) ([#1559]). TAs are always mapped using small
2645d8aaa04SJerome Forissier  pages.
2655d8aaa04SJerome Forissier
2665d8aaa04SJerome Forissier## Bug fixes
2675d8aaa04SJerome Forissier
2685d8aaa04SJerome Forissier* Reduce size of non-pageable code ([#1621])
2695d8aaa04SJerome Forissier* Ignore `TA_FLAG_MULTI_SESSION` and `TA_FLAG_INSTANCE_KEEP_ALIVE` when
2705d8aaa04SJerome Forissier  `TA_FLAG_SINGLE_INSTANCE` is not set ([#1574])
2715d8aaa04SJerome Forissier* libutee: remove buffering for AES GCM (PR#1573) and AES CTR ([#1580])
2725d8aaa04SJerome Forissier* Fix ROUNDUP()/ROUNDDOWN() macros ([#1519])
2735d8aaa04SJerome Forissier* Do not touch other bits in GICD_CTLR ([#1508])
2745d8aaa04SJerome Forissier* Fix build issue with `DEBUG=y` and `CFG_TEE_CORE_LOG_LEVEL=0` ([#1502])
2755d8aaa04SJerome Forissier* crypto: do not restrict hash size when algorithm is ECDSA ([#1497])
2765d8aaa04SJerome Forissier
2775d8aaa04SJerome Forissier## Security fixes or enhancements
2785d8aaa04SJerome Forissier
2795d8aaa04SJerome Forissier- crypto: fix RSA key leakage after fault injection attack
2805d8aaa04SJerome Forissier  ([OP-TEE-2016-0003][OP-TEE-2016-0003])  ([#1610])
2815d8aaa04SJerome Forissier* crypto: fix RSA key leakage after side channel attack
2825d8aaa04SJerome Forissier  ([OP-TEE-2016-0002][OP-TEE-2016-0002]) ([#1610])
2835d8aaa04SJerome Forissier* Make pager aliased pages not always writable ([#1551])
2845d8aaa04SJerome Forissier* Support for no-exec RO and RW data ([#1459], [#1550])
2855d8aaa04SJerome Forissier
2865d8aaa04SJerome Forissier## New issues
2875d8aaa04SJerome Forissier
2885d8aaa04SJerome Forissier* armv7: some platform-specific code (`plat_cpu_reset_early()`) overwrites
2895d8aaa04SJerome ForissierSCTLR bits configured by generic code. This affects alignment checks (`SCTLR.A`)
2905d8aaa04SJerome Forissierand write-implies-no-exec (`SCTLR.WXN`, `SCTLR.UWXN`), which can therefore not
2915d8aaa04SJerome Forissierbe configured via the compile-time `CFG_` variables.
2925d8aaa04SJerome Forissier* armv7: plat-imx: Cortex-A9 cores should enable branch prediction (`SCLTR.Z`)
2935d8aaa04SJerome Forissierfor improved performance.
2945d8aaa04SJerome Forissier* [#1656] qemu_armv8a: init hangs when secure data path and pager are both
2955d8aaa04SJerome Forissier  enabled.
2965d8aaa04SJerome Forissier
2975d8aaa04SJerome Forissier## Tested on
2985d8aaa04SJerome Forissier
2995d8aaa04SJerome ForissierIn the list below, _standard_ means that the `xtest` program passed with
3005d8aaa04SJerome Forissierits default configuration, while _extended_ means it was run successfully
3015d8aaa04SJerome Forissierwith the additional GlobalPlatform™ TEE Initial Configuration Test Suite
3025d8aaa04SJerome Forissierv1.1.0.4.
3035d8aaa04SJerome Forissier
3045d8aaa04SJerome ForissierIf a platform is not listed, it means the release was not tested on this
3055d8aaa04SJerome Forissierplatform.
3065d8aaa04SJerome Forissier
3075d8aaa04SJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
3085d8aaa04SJerome Forissier* d02: extended
3095d8aaa04SJerome Forissier* hikey: extended
3105d8aaa04SJerome Forissier* imx-mx6ulevk: standard
3115d8aaa04SJerome Forissier* imx-mx6ullevk: standard
3125d8aaa04SJerome Forissier* imx-mx7dsabresd: standard
3135d8aaa04SJerome Forissier* ls-ls1021atwr: standard
3145d8aaa04SJerome Forissier* mediatek-mt8173: standard
3155d8aaa04SJerome Forissier* rcar-h3: standard
3165d8aaa04SJerome Forissier* rpi3: standard
3175d8aaa04SJerome Forissier* stm-b2260: extended
3185d8aaa04SJerome Forissier* stm-cannes: extended
3195d8aaa04SJerome Forissier* ti-am43xx: standard
3205d8aaa04SJerome Forissier* ti-am57xx: standard
3215d8aaa04SJerome Forissier* ti-dra7xx: standard
3225d8aaa04SJerome Forissier* vexpress-fvp: standard
3235d8aaa04SJerome Forissier* vexpress-juno: standard
3245d8aaa04SJerome Forissier* vexpress-qemu_armv8a: standard
3255d8aaa04SJerome Forissier* vexpress-qemu_virt: standard
3265d8aaa04SJerome Forissier
3275d8aaa04SJerome Forissier[github_commits_2_5_0]: https://github.com/OP-TEE/optee_os/compare/2.4.0...2.5.0-rc1
3285d8aaa04SJerome Forissier[#1656]: https://github.com/OP-TEE/optee_os/issues/1656
3295d8aaa04SJerome Forissier[#1650]: https://github.com/OP-TEE/optee_os/pull/1650
3305d8aaa04SJerome Forissier[#1639]: https://github.com/OP-TEE/optee_os/pull/1639
3315d8aaa04SJerome Forissier[#1630]: https://github.com/OP-TEE/optee_os/pull/1630
3325d8aaa04SJerome Forissier[#1623]: https://github.com/OP-TEE/optee_os/pull/1623
3335d8aaa04SJerome Forissier[#1621]: https://github.com/OP-TEE/optee_os/pull/1621
3345d8aaa04SJerome Forissier[#1610]: https://github.com/OP-TEE/optee_os/pull/1610
3355d8aaa04SJerome Forissier[#1592]: https://github.com/OP-TEE/optee_os/pull/1592
3365d8aaa04SJerome Forissier[#1589]: https://github.com/OP-TEE/optee_os/pull/1589
3375d8aaa04SJerome Forissier[#1586]: https://github.com/OP-TEE/optee_os/pull/1586
3385d8aaa04SJerome Forissier[#1580]: https://github.com/OP-TEE/optee_os/pull/1580
3395d8aaa04SJerome Forissier[#1578]: https://github.com/OP-TEE/optee_os/pull/1578
3405d8aaa04SJerome Forissier[#1577]: https://github.com/OP-TEE/optee_os/pull/1577
3415d8aaa04SJerome Forissier[#1574]: https://github.com/OP-TEE/optee_os/pull/1574
3425d8aaa04SJerome Forissier[#1559]: https://github.com/OP-TEE/optee_os/pull/1559
3435d8aaa04SJerome Forissier[#1551]: https://github.com/OP-TEE/optee_os/pull/1551
3445d8aaa04SJerome Forissier[#1550]: https://github.com/OP-TEE/optee_os/pull/1550
3455d8aaa04SJerome Forissier[#1519]: https://github.com/OP-TEE/optee_os/pull/1519
3465d8aaa04SJerome Forissier[#1502]: https://github.com/OP-TEE/optee_os/pull/1502
3475d8aaa04SJerome Forissier[#1365]: https://github.com/OP-TEE/optee_os/pull/1365
3485d8aaa04SJerome Forissier[#1552]: https://github.com/OP-TEE/optee_os/pull/1552
3495d8aaa04SJerome Forissier[#1513]: https://github.com/OP-TEE/optee_os/pull/1513
3505d8aaa04SJerome Forissier[#1508]: https://github.com/OP-TEE/optee_os/pull/1508
3515d8aaa04SJerome Forissier[#1493]: https://github.com/OP-TEE/optee_os/pull/1493
3525d8aaa04SJerome Forissier[#1497]: https://github.com/OP-TEE/optee_os/pull/1497
3535d8aaa04SJerome Forissier[#1492]: https://github.com/OP-TEE/optee_os/pull/1492
3545d8aaa04SJerome Forissier[#1490]: https://github.com/OP-TEE/optee_os/pull/1490
3555d8aaa04SJerome Forissier[#1465]: https://github.com/OP-TEE/optee_os/pull/1465
3565d8aaa04SJerome Forissier[#1459]: https://github.com/OP-TEE/optee_os/pull/1459
3575d8aaa04SJerome Forissier[#1440]: https://github.com/OP-TEE/optee_os/pull/1440
3585d8aaa04SJerome Forissier[OP-TEE-2016-0003]: https://www.op-tee.org/security-advisories/
3595d8aaa04SJerome Forissier[OP-TEE-2016-0002]: https://www.op-tee.org/security-advisories/
3605d8aaa04SJerome Forissier
361702609a7SJerome Forissier# OP-TEE - version 2.4.0
362702609a7SJerome Forissier
363702609a7SJerome Forissier[Link][github_commits_2_4_0] to a list of all commits between this release and
364702609a7SJerome Forissierthe previous one (2.3.0).
365702609a7SJerome Forissier
366702609a7SJerome ForissierPlease note: this release is API-compatible with the previous one, but the
367702609a7SJerome ForissierSecure Storage internal format for the REE and SQL FS is not compatible due to
368702609a7SJerome Forissiercommits [a238b74][commit_a238b74] ("core: REE FS: use the new hash tree
369702609a7SJerome Forissierinterface") and [44e900e][commit_44e900e] ("core: SQL FS: use the new hash tree
370702609a7SJerome Forissierinterface").
371702609a7SJerome Forissier
372702609a7SJerome Forissier## New features
373702609a7SJerome Forissier
374702609a7SJerome Forissier* Add porting guidelines
375702609a7SJerome Forissier
376702609a7SJerome Forissier* Add support for Secure Data Path which allows Client and Trusted Applications
377702609a7SJerome Forissier  to share references to secure memory
378702609a7SJerome Forissier
379702609a7SJerome Forissier* New supported platform: Texas Instruments AM57xx (`PLATFORM=ti-am57xx`)
380702609a7SJerome Forissier
381702609a7SJerome Forissier* ARMv7-A: add support for platform services in secure monitor and add these
382702609a7SJerome Forissier  services for the DRA7xx platform
383702609a7SJerome Forissier
384702609a7SJerome Forissier* SPI framework and PL022 driver cleanup and improvements
385702609a7SJerome Forissier
386702609a7SJerome Forissier* Use CNTPCT (when available) to add entropy to the software PRNG
387702609a7SJerome Forissier
388702609a7SJerome Forissier* Add GlobalPlatform Socket API for UDP and TCP (IPv4 and IPv6)
389702609a7SJerome Forissier
390702609a7SJerome Forissier* DRA7: add TRNG driver, enable GICv2 driver
391702609a7SJerome Forissier
392702609a7SJerome Forissier* Support load address larger than 4G
393702609a7SJerome Forissier
394702609a7SJerome Forissier* libutee: preserve error code when calling TEE_Panic() for easier
395702609a7SJerome Forissier  troubleshooting
396702609a7SJerome Forissier
397702609a7SJerome Forissier* Support TA profiling with gprof (-pg compiler switch)
398702609a7SJerome Forissier
399702609a7SJerome Forissier* Optimize the ELF loader for TAs when pager is enabled
400702609a7SJerome Forissier
401702609a7SJerome Forissier* Update documentation
402702609a7SJerome Forissier
403702609a7SJerome Forissier* Add paged secure shared memory that can be transferred between TAs as
404702609a7SJerome Forissier  needed
405702609a7SJerome Forissier
406702609a7SJerome Forissier* Introduce MOBJ abstraction
407702609a7SJerome Forissier
408702609a7SJerome Forissier* i.MX6: add PSCI "on" function
409702609a7SJerome Forissier
410702609a7SJerome Forissier* arm32: introduce PSCI framework
411702609a7SJerome Forissier
412702609a7SJerome Forissier## Bug fixes
413702609a7SJerome Forissier
414702609a7SJerome Forissier* Secure storage: improve integrity checking of the REE and SQL filesystems by
415702609a7SJerome Forissier  adding a hash tree on the internal data structures. Any external modification
416702609a7SJerome Forissier  is detected, except full rollback. Fixes [#1188][issue1188].
417702609a7SJerome Forissier
418702609a7SJerome Forissier* The linux driver will set the 'privileged' flag (TEE_GEN_CAP_PRIVILEGED) on
419702609a7SJerome Forissier  the device intended for use by tee-supplicant. Fixes [#1199][issue1199].
420702609a7SJerome Forissier
421702609a7SJerome Forissier* RPMB: don't try to program the RPMB key by default
422702609a7SJerome Forissier
423702609a7SJerome Forissier* Fix "make clean" error cases
424702609a7SJerome Forissier
425702609a7SJerome Forissier* Fix issue when resetting persistent storage enumerator [#1332][issue1332]
426702609a7SJerome Forissier
427702609a7SJerome Forissier* Fix TA panic when doing AES CTS with specific buffer sizes
428702609a7SJerome Forissier  [#1203][issue1203].
429702609a7SJerome Forissier
430702609a7SJerome Forissier## Known issues
431702609a7SJerome Forissier
432702609a7SJerome Forissier* On RPi3 xtest sometimes stall (rcu_sched self-detected stall on CPU) [#1353][issue1353]
433702609a7SJerome Forissier* For multi-core PSCI support is to be added for ls1021atwr in OP-TEE.
434702609a7SJerome Forissier* USB keyboard cannot be used to stop the u-boot timeout ([build issue131]).
435702609a7SJerome Forissier* Travis service (build.git) seems unstable from time to time.
436702609a7SJerome Forissier
437702609a7SJerome Forissier## Tested on
438702609a7SJerome Forissier
439702609a7SJerome ForissierIn the list below, _standard_ means that the `xtest` program passed with
440702609a7SJerome Forissierits default configuration, while _extended_ means it was run successfully
441702609a7SJerome Forissierwith the additional GlobalPlatform™ TEE Initial Configuration Test Suite
442702609a7SJerome Forissierv1.1.0.4.
443702609a7SJerome Forissier
444702609a7SJerome ForissierIf a platform is not listed, it means the release was not tested on this
445702609a7SJerome Forissierplatform.
446702609a7SJerome Forissier
447702609a7SJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
448702609a7SJerome Forissier* d02: extended
449702609a7SJerome Forissier* hikey: extended
450702609a7SJerome Forissier* imx-mx6ulevk: standard
451702609a7SJerome Forissier* ls-ls1021atwr: standard (single core)
452702609a7SJerome Forissier* mediatek-mt8173: standard
453702609a7SJerome Forissier* rcar-h3: standard
454702609a7SJerome Forissier* rpi3: standard
455702609a7SJerome Forissier* stm-b2260: extended
456702609a7SJerome Forissier* ti-dra7xx: standard
457702609a7SJerome Forissier* vexpress-fvp: standard
458702609a7SJerome Forissier* vexpress-juno: standard
459702609a7SJerome Forissier* vexpress-qemu_armv8a: standard
460702609a7SJerome Forissier* vexpress-qemu_virt: standard
461702609a7SJerome Forissier* zynqmp-zc1751_dc1: standard
462702609a7SJerome Forissier* zynqmp-zc1751_dc2: standard
463702609a7SJerome Forissier* zynqmp-zcu102: standard
464702609a7SJerome Forissier
465702609a7SJerome Forissier[github_commits_2_4_0]: https://github.com/OP-TEE/optee_os/compare/2.3.0...2.4.0
466702609a7SJerome Forissier[issue1332]: https://github.com/OP-TEE/optee_os/issues/1332
467702609a7SJerome Forissier[issue1353]: https://github.com/OP-TEE/optee_os/issues/1353
468702609a7SJerome Forissier[build issue131]: https://github.com/OP-TEE/build/issues/131
469702609a7SJerome Forissier[commit_a238b74]: https://github.com/OP-TEE/optee_os/commit/a238b744b1b3
470702609a7SJerome Forissier[commit_44e900e]: https://github.com/OP-TEE/optee_os/commit/44e900eabfc1
471702609a7SJerome Forissier
47228fcee17SJerome Forissier# OP-TEE - version 2.3.0
47328fcee17SJerome Forissier
47428fcee17SJerome Forissier[Link][github_commits_2_3_0] to a list of all commits between this release and
47528fcee17SJerome Forissierthe previous one (2.2.0).
47628fcee17SJerome Forissier
47728fcee17SJerome ForissierPlease note: this release is API-compatible with the previous one, but the
47828fcee17SJerome ForissierSecure Storage internal format for the REE FS is not compatible due to commit
47928fcee17SJerome Forissier[361fb3e][commit_361fb3e] ("core: REE FS: use a single file per object").
48028fcee17SJerome Forissier
48128fcee17SJerome Forissier[commit_361fb3e]: https://github.com/OP-TEE/optee_os/commit/361fb3e
48228fcee17SJerome Forissier
48328fcee17SJerome Forissier## New features
48428fcee17SJerome Forissier
48528fcee17SJerome Forissier* New supported platform: Xilinx Zynq 7000 ZC702 (`PLATFORM=zynq7k-zc702`)
48628fcee17SJerome Forissier
48728fcee17SJerome Forissier* Add debug assertions to spinlocks and mutexes
48828fcee17SJerome Forissier
48928fcee17SJerome Forissier* Add more CP15 register access macros for Cortex-A9
49028fcee17SJerome Forissier
49128fcee17SJerome Forissier* ARMv7-A: redesign secure monitor to make it easier to register services
49228fcee17SJerome Forissier
49328fcee17SJerome Forissier* ARMv7-A: cleanup boot arguments
49428fcee17SJerome Forissier
49528fcee17SJerome Forissier* libutee: extend `TEE_CheckMemoryAccessRights()` with
49628fcee17SJerome Forissier  `TEE_MEMORY_ACCESS_SECURE` and `TEE_MEMORY_ACCESS_NONSECURE`
49728fcee17SJerome Forissier
49828fcee17SJerome Forissier* plat-hikey: enable SPI by default and add sample test code
49928fcee17SJerome Forissier
50028fcee17SJerome Forissier* Consider `CFLAGS_ta_arm64` and `CFLAGS_ta_arm32` when building TAs
50128fcee17SJerome Forissier
50228fcee17SJerome Forissier* Secure storage refactoring
50328fcee17SJerome Forissier  - Simplify interface with tee-supplicant. Minimize round trips with normal
50428fcee17SJerome Forissier    world, especially by adding a cache for FS RPC payload data.
50528fcee17SJerome Forissier  - REE FS: use a single file per object, remove block cache.
50628fcee17SJerome Forissier
50728fcee17SJerome Forissier* Print call stack in panic()
50828fcee17SJerome Forissier
50928fcee17SJerome Forissier## Bug fixes
51028fcee17SJerome Forissier
51128fcee17SJerome Forissier* Fix UUID encoding when communicating with normal world (use big endian
51228fcee17SJerome Forissier  mode instead of native endianness). Related to this, the string format
51328fcee17SJerome Forissier  for UUIDs has changed in tee-supplicant, so that TA file names now follow
51428fcee17SJerome Forissier  the format defined in RFC4122 (a missing hyphen was added). The old format
51528fcee17SJerome Forissier  is still supported, but deprecated, and will likely be removed with the
51628fcee17SJerome Forissier  next major release.
51728fcee17SJerome Forissier
51828fcee17SJerome Forissier* Drop write permission to non-writable ELF segments after TA loading is
51928fcee17SJerome Forissier  complete.
52028fcee17SJerome Forissier
52128fcee17SJerome Forissier* mm: fix confusing memory mapping debug traces
52228fcee17SJerome Forissier
52328fcee17SJerome Forissier* plat-ti: fix issues with MMU mapping
52428fcee17SJerome Forissier
52528fcee17SJerome Forissier* crypto: fix clearing of big numbers
52628fcee17SJerome Forissier
52728fcee17SJerome Forissier* build: allow spaces and double quotes in CFG_ variables
52828fcee17SJerome Forissier
52928fcee17SJerome Forissier* mm: use paddr_t to support both 32- and 64-bit architectures properly.
53028fcee17SJerome Forissier  Resolves 32-bit truncation error when pool is at top of 32 bit address
53128fcee17SJerome Forissier  space on 64-bit architecture.
53228fcee17SJerome Forissier
53328fcee17SJerome Forissier* plat-stm: support pager. Fix pager on ARMv7-A SMP boards.
53428fcee17SJerome Forissier
53528fcee17SJerome Forissier* Fix debug output of Trusted Applications (remove "ERROR: TEE-CORE:" prefix)
53628fcee17SJerome Forissier
53728fcee17SJerome Forissier* Do not consider TA memref parameters as TA private memory
53828fcee17SJerome Forissier
53928fcee17SJerome Forissier* crypto: fix `cipher_final()` which would not call `cbc_done()` for CBC_MAC
54028fcee17SJerome Forissier  algorithms
54128fcee17SJerome Forissier
54228fcee17SJerome Forissier* fix for 16-way PL310
54328fcee17SJerome Forissier
54428fcee17SJerome Forissier* arm32: fix call stack unwinding (`print_stack()`)
54528fcee17SJerome Forissier
54628fcee17SJerome Forissier* arm32: fix spinlock assembly code
54728fcee17SJerome Forissier
54828fcee17SJerome Forissier* plat-stm, plat-imx: fix SCR initalization
54928fcee17SJerome Forissier
55028fcee17SJerome Forissier* Fix user L1 MMU entries calculation (non-LPAE), allowing TTBCR.N values
55128fcee17SJerome Forissier  other than 7.
55228fcee17SJerome Forissier
55328fcee17SJerome Forissier* mtk-mt8173: fix panic caused by incorrect size of SHMEM
55428fcee17SJerome Forissier
55528fcee17SJerome Forissier* plat-stm: fix RNG driver (non-flat mapping)
55628fcee17SJerome Forissier
55728fcee17SJerome Forissier## Known issues
55828fcee17SJerome Forissier
55928fcee17SJerome Forissier* New issues open on GitHub
56028fcee17SJerome Forissier  * [#1203][issue1203] AES-CTS mode will fail when inlen=0x100, in_incr=0x80
56128fcee17SJerome Forissier  * [#1199][issue1199] Both tee and teepriv reported GlobalPlatform compliant
56228fcee17SJerome Forissier  * [#1188][issue1188] Secure storage (SQL FS and REE FS): blocks not tied to
56328fcee17SJerome Forissier    current meta header
56428fcee17SJerome Forissier  * [#1172][issue1172] paddr_t should be larger than 32 bits when
56528fcee17SJerome Forissier    CFG_WITH_LPAE is enabled
56628fcee17SJerome Forissier
56728fcee17SJerome Forissier## Tested on
56828fcee17SJerome Forissier
56928fcee17SJerome ForissierIn the list below, _standard_ means that the `xtest` program passed with
57028fcee17SJerome Forissierits default configuration, while _extended_ means it was run successfully
57128fcee17SJerome Forissierwith the additional GlobalPlatform™ TEE Initial Configuration Test Suite
57228fcee17SJerome Forissierv1.1.0.4.
57328fcee17SJerome Forissier
57428fcee17SJerome ForissierIf a platform is not listed, it means the release was not tested on this
57528fcee17SJerome Forissierplatform.
57628fcee17SJerome Forissier
57728fcee17SJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
57828fcee17SJerome Forissier* d02: extended
57928fcee17SJerome Forissier* hikey: extended
58028fcee17SJerome Forissier* imx-mx6ulevk: standard
58128fcee17SJerome Forissier* ls-ls1021atwr: standard
58228fcee17SJerome Forissier* mediatek-mt8173: standard
58328fcee17SJerome Forissier* rcar-h3: standard
58428fcee17SJerome Forissier* rpi3: standard
58528fcee17SJerome Forissier* stm-b2260: extended
58628fcee17SJerome Forissier* stm-cannes: extended
58728fcee17SJerome Forissier* ti-dra7xx: standard
58828fcee17SJerome Forissier* vexpress-fvp: standard
58928fcee17SJerome Forissier* vexpress-juno: standard
59028fcee17SJerome Forissier* vexpress-qemu_armv8a: standard
59128fcee17SJerome Forissier* vexpress-qemu_virt: extended
59228fcee17SJerome Forissier* zynqmp-zcu102: standard
59328fcee17SJerome Forissier
59428fcee17SJerome Forissier[github_commits_2_3_0]: https://github.com/OP-TEE/optee_os/compare/2.2.0...2.3.0
59528fcee17SJerome Forissier[issue1172]: https://github.com/OP-TEE/optee_os/issues/1172
59628fcee17SJerome Forissier[issue1188]: https://github.com/OP-TEE/optee_os/issues/1188
59728fcee17SJerome Forissier[issue1199]: https://github.com/OP-TEE/optee_os/issues/1199
59828fcee17SJerome Forissier[issue1203]: https://github.com/OP-TEE/optee_os/issues/1203
59928fcee17SJerome Forissier
600c0c5d399SJerome Forissier# OP-TEE - version 2.2.0
601c0c5d399SJerome Forissier
602c0c5d399SJerome Forissier[Link][github_commits_2_2_0] to a list of all commits between this release and
603c0c5d399SJerome Forissierthe previous one (2.1.0).
604c0c5d399SJerome Forissier
605c0c5d399SJerome ForissierPlease note: this release is API-compatible with the previous one, but the
606c0c5d399SJerome ForissierSecure Storage internal format is not compatible due to commit
607c0c5d399SJerome Forissier[fde4a75][commit_fde4a75] ("storage: encrypt the FEK with a TA-specific key").
608c0c5d399SJerome Forissier
609c0c5d399SJerome Forissier[commit_fde4a75]: https://github.com/OP-TEE/optee_os/commit/fde4a75
610c0c5d399SJerome Forissier
611c0c5d399SJerome Forissier## New features
612c0c5d399SJerome Forissier
613c0c5d399SJerome Forissier* New supported platforms:
614c0c5d399SJerome Forissier	* Freescale i.MX6 Quad SABRE Lite & SD
615c0c5d399SJerome Forissier	* HiSilicon D02
616c0c5d399SJerome Forissier	* Raspberry Pi3
617c0c5d399SJerome Forissier	* Renesas RCAR H3
618c0c5d399SJerome Forissier	* STMicroelectronics b2260 - h410
619c0c5d399SJerome Forissier
620c0c5d399SJerome Forissier* Pager: Support paging of read/write pages by encrypting them with AES-GCM.
621c0c5d399SJerome Forissier  Support paging of user TAs. Add global setting for TZSRAM size
622c0c5d399SJerome Forissier  (CFG_CORE_TZSRAM_EMUL_SIZE), defaults to 300K.
623c0c5d399SJerome Forissier
624c0c5d399SJerome Forissier* Support for more than 8 CPU cores
625c0c5d399SJerome Forissier
626c0c5d399SJerome Forissier* Added SPI framework and PL022 driver
627c0c5d399SJerome Forissier
628c0c5d399SJerome Forissier* GPIO: framework supports multiple instances, PL061 driver now has get/set
629c0c5d399SJerome Forissier  interrupt and mode control functions
630c0c5d399SJerome Forissier
631c0c5d399SJerome Forissier* Secure storage: Encrypt the File Encryption Key with a TA-specific key for
632c0c5d399SJerome Forissier  better TA isolation. Add build-time and run-time support for multiple storage
633c0c5d399SJerome Forissier  backends. Add SQLite backend.
634c0c5d399SJerome Forissier
635c0c5d399SJerome Forissier* Trusted User Interface: some code is introduced to support the implementation
636c0c5d399SJerome Forissier  of TUI. This includes: a generic framebuffer driver, display and serial
637c0c5d399SJerome Forissier  abstractions, and drivers for PL111 (LCD) / PL050 (KMI) / TZC400 and PS2
638c0c5d399SJerome Forissier  mouse.
639c0c5d399SJerome Forissier
640c0c5d399SJerome Forissier* AES acceleration using ARMv8-A Cryptographic Extensions instructions is
641c0c5d399SJerome Forissier  now supported in AArch32 mode
642c0c5d399SJerome Forissier
643c0c5d399SJerome Forissier* Add support for GCC flags: -fsanitize=undefined and -fsanitize=kernel-address
644c0c5d399SJerome Forissier
645c0c5d399SJerome Forissier* Use a global setting for core heap size (CFG_CORE_HEAP_SIZE), 64K by default.
646c0c5d399SJerome Forissier
647c0c5d399SJerome Forissier* Add macros to unwind and print the call stack of TEE core
648c0c5d399SJerome Forissier
649c0c5d399SJerome Forissier* Libtomcrypt: sync with the latest `develop` branch.
650c0c5d399SJerome Forissier
651c0c5d399SJerome Forissier* The Trusted Application SDK (ta_dev_kit.mk) can produce libraries (.a)
652c0c5d399SJerome Forissier
653c0c5d399SJerome Forissier* Rework assertions and TEE core panics and properly honor NDEBUG
654c0c5d399SJerome Forissier
655c0c5d399SJerome Forissier## Bug fixes
656c0c5d399SJerome Forissier
657c0c5d399SJerome Forissier* Fix incorrect algorithm passed to cipher.final()
658c0c5d399SJerome Forissier
659c0c5d399SJerome Forissier* scripts: support Python 2.x and 3.x
660c0c5d399SJerome Forissier
661c0c5d399SJerome Forissier* Secure storage: Add proper locking to support concurrent access. Fix sign
662c0c5d399SJerome Forissier  extension bug with offset parameter of syscall storage_obj_seek which could
663c0c5d399SJerome Forissier  cause errors in Aarch32 mode. Fix reading beyond end of file.
664c0c5d399SJerome Forissier
665c0c5d399SJerome Forissier* Aarch64: mask all maskable exceptions before doing a normal return from call.
666c0c5d399SJerome Forissier
667c0c5d399SJerome Forissier* Device Tree: add no-map property to OP-TEE node in reserved-memory.
668c0c5d399SJerome Forissier
669c0c5d399SJerome Forissier* LibTomcrypt: fix CVE-2016-6129
670c0c5d399SJerome Forissier
671c0c5d399SJerome Forissier## Known issues
672c0c5d399SJerome Forissier
673c0c5d399SJerome Forissier* New issues open on GitHub
674c0c5d399SJerome Forissier  * [#1093][issue1093] rcar-h3: xtest 6010 hangs
675c0c5d399SJerome Forissier  * [#1092][issue1092] rcar-h3: xtest 4010 fails
676c0c5d399SJerome Forissier  * [#1081][issue1081] Bad mapping of TA secure memref parameters
677c0c5d399SJerome Forissier  * [#1071][issue1071] __data_end may not correctly represent text start position when using CFG_WITH_PAGER
678c0c5d399SJerome Forissier  * [#1069][issue1069] armv7/Aarch32: crash in stack unwind (DPRINT_STACK())
679c0c5d399SJerome Forissier
680c0c5d399SJerome Forissier## Tested on
681c0c5d399SJerome Forissier
682c0c5d399SJerome ForissierIn the list below, _standard_ means that the `xtest` program passed with
683c0c5d399SJerome Forissierits default configuration, while _extended_ means it was run successfully
684c0c5d399SJerome Forissierwith the additional GlobalPlatform™ TEE Initial Configuration Test Suite
685c0c5d399SJerome Forissierv1.1.0.4.
686c0c5d399SJerome Forissier
687c0c5d399SJerome ForissierIf a platform is not listed, it means the release was not tested on this
688c0c5d399SJerome Forissierplatform.
689c0c5d399SJerome Forissier
690c0c5d399SJerome Forissier<!-- ${PLATFORM}-${PLATFORM_FLAVOR}, ordered alphabetically -->
691c0c5d399SJerome Forissier* d02: extended
692c0c5d399SJerome Forissier* hikey: extended
693c0c5d399SJerome Forissier* imx-mx6qsabrelite: standard
694c0c5d399SJerome Forissier* imx-mx6qsabresd: standard
695c0c5d399SJerome Forissier* rcar-h3: standard, pass except issues [#1092][issue1092] and [#1093][issue1093]
696c0c5d399SJerome Forissier* rpi3: standard
697c0c5d399SJerome Forissier* stm-b2260: standard
698c0c5d399SJerome Forissier* stm-cannes: standard
699c0c5d399SJerome Forissier* ti-dra7xx: standard
700c0c5d399SJerome Forissier* vexpress-fvp: standard
701c0c5d399SJerome Forissier* vexpress-juno: standard
702c0c5d399SJerome Forissier* vexpress-qemu_armv8a: standard
703c0c5d399SJerome Forissier* vexpress-qemu_virt: extended
704c0c5d399SJerome Forissier* zynqmp-zcu102: standard
705c0c5d399SJerome Forissier
706c0c5d399SJerome Forissier[github_commits_2_2_0]: https://github.com/OP-TEE/optee_os/compare/2.1.0...2.2.0
707c0c5d399SJerome Forissier[issue1081]: https://github.com/OP-TEE/optee_os/issues/1081
708c0c5d399SJerome Forissier[issue1071]: https://github.com/OP-TEE/optee_os/issues/1071
709c0c5d399SJerome Forissier[issue1069]: https://github.com/OP-TEE/optee_os/issues/1069
710c0c5d399SJerome Forissier[issue1092]: https://github.com/OP-TEE/optee_os/issues/1092
711c0c5d399SJerome Forissier[issue1093]: https://github.com/OP-TEE/optee_os/issues/1093
712c0c5d399SJerome Forissier
713ac3cc110SPascal Brand# OP-TEE - version 2.1.0
714a0cd5d60SPascal Brand
715ac3cc110SPascal Brand## New features
716ac3cc110SPascal Brand
717ac3cc110SPascal Brand* New supported platforms:
718ac3cc110SPascal Brand	* Xilinx Zynq UltraScale+ MPSOC
719ac3cc110SPascal Brand	* Spreadtrum SC9860
720ac3cc110SPascal Brand
721ac3cc110SPascal Brand* GCC5 support
722ac3cc110SPascal Brand
723ac3cc110SPascal Brand* Non Linear Mapping support: In OP-TEE kernel mode, the physical to virtual
724ac3cc110SPascal Brand  addresses was linear until this release, meaning the virtual addresses
725ac3cc110SPascal Brand  were equal to the physical addresses. This is no more the case in this
726ac3cc110SPascal Brand  release.
727ac3cc110SPascal Brand
728ac3cc110SPascal Brand* Font rendering routines have been introduced in order to ease an
729ac3cc110SPascal Brand  implementation of Trusted UI.
730ac3cc110SPascal Brand
731ac3cc110SPascal Brand* File Storage: Possibility to use the normal world filesystem and the RPMB
732ac3cc110SPascal Brand  implementations simultaneously.
733ac3cc110SPascal Brand
734ac3cc110SPascal Brand* AOSP: There is a [local manifest][aosp_local_manifest] to build OP-TEE into an AOSP build, running on HiKey.
735ac3cc110SPascal Brand  Please refer to the README in that repo for instructions.
736ac3cc110SPascal Brand
737ac3cc110SPascal Brand* OpenEmbedded: In addition to the makefile-based build described in the optee_os README, there is an
738ac3cc110SPascal Brand  [OpenEmbedded-based build][oe_build] that supports Qemu (32-bit), FVP (64-bit), and HiKey (64-bit).
739ac3cc110SPascal Brand  Please refer to the README in that repo for instructions.
740ac3cc110SPascal Brand
741ac3cc110SPascal Brand* [Link][github_commits_2_1_0] to a list of all commits between this and
742ac3cc110SPascal Brand  previous release.
743ac3cc110SPascal Brand
744ac3cc110SPascal Brand
745ac3cc110SPascal Brand## Tested on
746ac3cc110SPascal BrandDefinitions:
747ac3cc110SPascal Brand
748ac3cc110SPascal Brand| Type | Meaning |
749ac3cc110SPascal Brand| ---- | ------- |
750ac3cc110SPascal Brand| Standard tests | The [optee_test][optee_test] project. |
751ac3cc110SPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
752ac3cc110SPascal Brand
753ac3cc110SPascal Brand*	ARM Juno Board (vexpress-juno), standard.
754ac3cc110SPascal Brand*	Foundation Models (vexpress-fvp), standard tests + extended tests,
755ac3cc110SPascal Brand	using FVP ARM V8 Foundation Platformr0p0 (platform build 10.0.37)
756ac3cc110SPascal Brand*	FSL i.MX6 UltraLite EVK (imx), standard.
757ac3cc110SPascal Brand*	FSL ls1021a (ls-ls1021atwr), standard tests.
758ac3cc110SPascal Brand*	HiKey (hikey), standard + extended tests.
759ac3cc110SPascal Brand*	QEMU (vexpress-qemu), standard + extended tests.
760ac3cc110SPascal Brand*	Xilinx Zynq UltraScale+ MPSOC, standard tests
761ac3cc110SPascal Brand
762ac3cc110SPascal BrandNote that the following platform has not been tested:
763ac3cc110SPascal Brand*	MTK8173-EVB (mediatek-mt8173)
764ac3cc110SPascal Brand
765ac3cc110SPascal Brand
766ac3cc110SPascal Brand## Known issues
767ac3cc110SPascal Brand* Issue(s) open on GitHub
768ac3cc110SPascal Brand  * [#868][pr868]: python-wand font generation sometimes times out
769ac3cc110SPascal Brand  * [#863][pr863]: "double free or corruption" error when building optee_os
770ac3cc110SPascal Brand  * [#858][pr858]: UUIDs in binary format have wrong endinanness
771ac3cc110SPascal Brand  * [#857][pr857]: Formatting of UUIDs is incorrect
772ac3cc110SPascal Brand  * [#847][pr847]: optee_os panic(TEE-CORE: Assertion)
773ac3cc110SPascal Brand  * [#838][pr838]: TUI font rendering is _very_ slow
774ac3cc110SPascal Brand  * [#814][pr814]: Persistent objects : save informations after close
775ac3cc110SPascal Brand  * [#665][pr665]: xtest 1013 stalled on HiKey when log levels are 4 and optee_os is on its own UART
776ac3cc110SPascal Brand  * [#506][pr506]: tee-supplicant panic & ta panic
777ac3cc110SPascal Brand
778ac3cc110SPascal Brand[github_commits_2_1_0]: https://github.com/OP-TEE/optee_os/compare/2.0.0...2.1.0
779ac3cc110SPascal Brand[pr868]: https://github.com/OP-TEE/optee_os/issues/868
780ac3cc110SPascal Brand[pr863]: https://github.com/OP-TEE/optee_os/issues/863
781ac3cc110SPascal Brand[pr858]: https://github.com/OP-TEE/optee_os/issues/858
782ac3cc110SPascal Brand[pr857]: https://github.com/OP-TEE/optee_os/issues/857
783ac3cc110SPascal Brand[pr847]: https://github.com/OP-TEE/optee_os/issues/847
784ac3cc110SPascal Brand[pr838]: https://github.com/OP-TEE/optee_os/issues/838
785ac3cc110SPascal Brand[pr814]: https://github.com/OP-TEE/optee_os/issues/814
786ac3cc110SPascal Brand[pr665]: https://github.com/OP-TEE/optee_os/issues/665
787ac3cc110SPascal Brand[aosp_local_manifest]: https://github.com/linaro-swg/optee_android_manifest
788ac3cc110SPascal Brand[oe_build]: https://github.com/linaro-swg/oe-optee
789ac3cc110SPascal Brand
790ac3cc110SPascal Brand# OP-TEE - version 2.0.0
791a0cd5d60SPascal Brand
792a0cd5d60SPascal Brand## New features
793a0cd5d60SPascal Brand
794a0cd5d60SPascal Brand* Generic driver: A new generic TEE driver is in the process of being
795a0cd5d60SPascal Brand  [upstreamed][gendrv_v9].
796a0cd5d60SPascal Brand  In this release, [OP-TEE/optee_linuxdriver][optee_linuxdriver] is no more used.
797a0cd5d60SPascal Brand  Instead, linux v4.5 is being patched using the proposed Generic TEE Driver,
798a0cd5d60SPascal Brand  as it can be found in [https://github.com/linaro-swg/linux/tree/optee][linux_optee]
799a0cd5d60SPascal Brand
800a0cd5d60SPascal Brand* RPMB support: Secure Storage can now use Replay Protected Memory Block (RPMB) partition
801a0cd5d60SPascal Brand  of an eMMC device. Check the [full documentation][rpmb_doc]
802a0cd5d60SPascal Brand
803a0cd5d60SPascal Brand* Hard-float ABI is now available.
804a0cd5d60SPascal Brand
805a0cd5d60SPascal Brand* [Link][github_commits_2_0_0] to a list of all commits between this and
806a0cd5d60SPascal Brand  previous release.
807a0cd5d60SPascal Brand
808a0cd5d60SPascal Brand
809a0cd5d60SPascal Brand## Tested on
810a0cd5d60SPascal BrandDefinitions:
811a0cd5d60SPascal Brand
812a0cd5d60SPascal Brand| Type | Meaning |
813a0cd5d60SPascal Brand| ---- | ------- |
814a0cd5d60SPascal Brand| Standard tests | The [optee_test][optee_test] project. |
815a0cd5d60SPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
816a0cd5d60SPascal Brand
817a0cd5d60SPascal Brand*	ARM Juno Board (vexpress-juno), standard.
818a0cd5d60SPascal Brand*	Foundation Models (vexpress-fvp), standard tests + extended tests,
819a0cd5d60SPascal Brand	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
820eb00c7b9SPascal Brand*	FSL ls1021a (ls-ls1021atwr), standard.
821a0cd5d60SPascal Brand*	HiKey (hikey), standard.
822a0cd5d60SPascal Brand*	MTK8173-EVB (mediatek-mt8173), standard.
823a0cd5d60SPascal Brand*	QEMU (vexpress-qemu), standard + extended tests.
824a0cd5d60SPascal Brand*	STM Cannes (stm-cannes), standard + extended tests.
825a0cd5d60SPascal Brand
826a0cd5d60SPascal Brand## Known issues
827a0cd5d60SPascal Brand* Issue(s) open on GitHub
828a0cd5d60SPascal Brand  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
829a0cd5d60SPascal Brand  * [#506][pr506]: tee-supplicant panic & ta panic
830a0cd5d60SPascal Brand
831a0cd5d60SPascal Brand[github_commits_2_0_0]: https://github.com/OP-TEE/optee_os/compare/1.1.0...2.0.0
832a0cd5d60SPascal Brand[rpmb_doc]: https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage_rpmb.md
833a0cd5d60SPascal Brand[optee_linuxdriver]: https://github.com/OP-TEE/optee_linuxdriver
834a0cd5d60SPascal Brand[gendrv_v9]: https://lkml.org/lkml/2016/4/1/205
835a0cd5d60SPascal Brand[linux_optee]: https://github.com/linaro-swg/linux/tree/optee
836a0cd5d60SPascal Brand
837a0cd5d60SPascal Brand
838c5bbfb4dSPascal Brand# OP-TEE - version 1.1.0
839c5bbfb4dSPascal Brand
840c5bbfb4dSPascal Brand
841c5bbfb4dSPascal Brand## New features
842c5bbfb4dSPascal Brand
843c5bbfb4dSPascal Brand* Softfloat library: floating point support is now available in 32bits TA.
844c5bbfb4dSPascal Brand
845c5bbfb4dSPascal Brand* Support running 64-bits TA: on ARMv8-A platform, TA can be compiled in
846c5bbfb4dSPascal Brand  AArch32 and/or in AArch64 in case the core is compiled in AArch64.
847c5bbfb4dSPascal Brand  An example can be found in HiKey configuration file. Using the following
848c5bbfb4dSPascal Brand  excerpt code, the user TA libraries are compiled in both AArch32 and
849c5bbfb4dSPascal Brand  AArch64, and can be found in `out/arm-plat-hikey/export-ta_arm32` and
850c5bbfb4dSPascal Brand  `out/arm-plat-hikey/export-ta_arm64`
851c5bbfb4dSPascal Brand
852c5bbfb4dSPascal Brand```
853c5bbfb4dSPascal Brand    ta-targets = ta_arm32
854c5bbfb4dSPascal Brand    ta-targets += ta_arm64
855c5bbfb4dSPascal Brand```
856c5bbfb4dSPascal Brand
857c5bbfb4dSPascal Brand* Concurrent TA support: multiple TA can run in parallel on
858c5bbfb4dSPascal Brand  several cores.
859c5bbfb4dSPascal Brand
860c5bbfb4dSPascal Brand* New tests added in xtest test suite: concurrent TA (xtest 1013),
861c5bbfb4dSPascal Brand  floating point tests (xtest 1006 and os_test TA) and corruption
862c5bbfb4dSPascal Brand  file storage (xtest 20000)
863c5bbfb4dSPascal Brand
864c5bbfb4dSPascal Brand* [Link][github_commits_1_1_0] to a list of all commits between this and
865c5bbfb4dSPascal Brand  previous release.
866c5bbfb4dSPascal Brand
867c5bbfb4dSPascal Brand
868c5bbfb4dSPascal Brand## Tested on
869c5bbfb4dSPascal BrandDefinitions:
870c5bbfb4dSPascal Brand
871c5bbfb4dSPascal Brand| Type | Meaning |
872c5bbfb4dSPascal Brand| ---- | ------- |
873c5bbfb4dSPascal Brand| Standard tests | The [optee_test][optee_test] project. |
874c5bbfb4dSPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
875c5bbfb4dSPascal Brand| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
876c5bbfb4dSPascal Brand
877c5bbfb4dSPascal Brand*	Foundation Models (vexpress-fvp), standard tests + extended tests,
878c5bbfb4dSPascal Brand	using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40)
879c5bbfb4dSPascal Brand*	HiKey (hikey), standard + extended tests.
880c5bbfb4dSPascal Brand*	MT8173 (mediatek), standard tests.
881c5bbfb4dSPascal Brand*	QEMU (vexpress-qemu), standard + extended tests.
882c5bbfb4dSPascal Brand*	STM Cannes (stm-cannes), standard + extended tests.
883c5bbfb4dSPascal Brand
884c5bbfb4dSPascal Brand## Known issues
885c5bbfb4dSPascal Brand* Secure Storage is implemented, but note that anti-rollback protection
886c5bbfb4dSPascal Brand  is not implemented yet.
887c5bbfb4dSPascal Brand
888c5bbfb4dSPascal Brand* Issue(s) open on GitHub
889c5bbfb4dSPascal Brand  * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant
890c5bbfb4dSPascal Brand  * [#296][pr296]: Connecting RPMB to the storage APIs.
891c5bbfb4dSPascal Brand  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
892c5bbfb4dSPascal Brand  * [#506][pr506]: tee-supplicant panic & ta panic
893c5bbfb4dSPascal Brand
894c5bbfb4dSPascal Brand[prld40]: https://github.com/OP-TEE/optee_linuxdriver/issues/40
895c5bbfb4dSPascal Brand[pr506]: https://github.com/OP-TEE/optee_os/issues/506
896c5bbfb4dSPascal Brand[github_commits_1_1_0]: https://github.com/OP-TEE/optee_os/compare/1.0.1...1.1.0
897c5bbfb4dSPascal Brand
898c5bbfb4dSPascal Brand
899c5bbfb4dSPascal Brand
9008a7ee79dSPascal Brand# OP-TEE - version 1.0.0
9018a7ee79dSPascal Brand
9028a7ee79dSPascal BrandOP-TEE is now maintained by Linaro. Contributors do not need to
9038a7ee79dSPascal Brandsign a CLA anymore, but must follow the rules of the [DCO][DCO]
9048a7ee79dSPascal Brand(Developer Certificate of Origin) instead.
9058a7ee79dSPascal Brand
9068a7ee79dSPascal Brand
9078a7ee79dSPascal Brand## New features
9088a7ee79dSPascal Brand
9098a7ee79dSPascal Brand* Add hardware support for Texas Instruments DRA7xx, ARMv7 (plat-ti)
9108a7ee79dSPascal Brand
9118a7ee79dSPascal Brand* GlobalPlatform™ TEE Internal Core API Specification v1.1,
9128a7ee79dSPascal Brand  including ECC algorithms.
9138a7ee79dSPascal Brand
9148a7ee79dSPascal Brand* Secure Storage: Files stored by the REE are now encrypted. Operations
9158a7ee79dSPascal Brand  are made atomic in order to prevent inconsistencies in case of errors
9168a7ee79dSPascal Brand  during the storage operations. [Slides][LCStorage] describing the
9178a7ee79dSPascal Brand  Secure Storage have been presented at the Linaro Connect SFO15.
9188a7ee79dSPascal Brand
9198a7ee79dSPascal Brand* Change of format of the Trusted Applications: they follow a
9208a7ee79dSPascal Brand  [signed ELF format][elf]
9218a7ee79dSPascal Brand
9228a7ee79dSPascal Brand* Rework thread [synchronization][synchro] in optee_os.
9238a7ee79dSPascal Brand
9248a7ee79dSPascal Brand* Use of ARMv8 native cryptographic support.
9258a7ee79dSPascal Brand
9268a7ee79dSPascal Brand* [OP-TEE/optee_test][optee_test] test suite is released.
9278a7ee79dSPascal Brand
9288a7ee79dSPascal Brand* Introduce [OP-TEE/manifest][manifest] and [OP-TEE/build][build]
9298a7ee79dSPascal Brand  to setup and build QEMU, FVP, HiKey and Mediatek platforms. Setup scripts
9308a7ee79dSPascal Brand  that used to be in optee_os have been removed, except for Juno board.
9318a7ee79dSPascal Brand
93295422146SPascal Brand* [Link][github_commits_1_0_0] to a list of all commits between this and
93395422146SPascal Brand  previous release.
93495422146SPascal Brand
9358a7ee79dSPascal Brand
9368a7ee79dSPascal Brand## Tested on
9378a7ee79dSPascal BrandDefinitions:
9388a7ee79dSPascal Brand
9398a7ee79dSPascal Brand| Type | Meaning |
9408a7ee79dSPascal Brand| ---- | ------- |
9418a7ee79dSPascal Brand| Standard tests | The [optee_test][optee_test] project. |
9428a7ee79dSPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
9438a7ee79dSPascal Brand| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
9448a7ee79dSPascal Brand
9458a7ee79dSPascal Brand*	ARM Juno Board (vexpress-juno), standard + extended tests.
9468a7ee79dSPascal Brand*	Foundation Models (vexpress-fvp), standard tests.
9478a7ee79dSPascal Brand*	HiKey (hikey), standard + extended tests.
9488a7ee79dSPascal Brand*	MT8173 (mediatek), standard tests.
9498a7ee79dSPascal Brand*	QEMU (vexpress-qemu), standard + extended tests.
9508a7ee79dSPascal Brand*	STM Cannes (stm-cannes), standard + extended tests.
9518a7ee79dSPascal Brand
95295422146SPascal Brand## Known issues
95395422146SPascal Brand* Secure Storage is implemented, but note that anti-rollback protection
95495422146SPascal Brand  is not implemented yet.
95595422146SPascal Brand
95695422146SPascal Brand* Issue(s) open on GitHub
95795422146SPascal Brand  * [#210][pr210]: libteec.so 32-bit does not communicate well
95895422146SPascal Brand    with 64-bit kernel module
95995422146SPascal Brand  * [#296][pr296]: Connecting RPMB to the storage APIs.
96095422146SPascal Brand  * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries
96195422146SPascal Brand  * [#494][pr494]: HiKey: xtest 7671 fails (1.0.0-rc2)
96295422146SPascal Brand
96395422146SPascal Brand[pr210]: https://github.com/OP-TEE/optee_os/issues/210
96495422146SPascal Brand[pr296]: https://github.com/OP-TEE/optee_os/issues/296
96595422146SPascal Brand[pr493]: https://github.com/OP-TEE/optee_os/issues/493
96695422146SPascal Brand[pr494]: https://github.com/OP-TEE/optee_os/issues/494
96795422146SPascal Brand[github_commits_1_0_0]: https://github.com/OP-TEE/optee_os/compare/0.3.0...1.0.0
9688a7ee79dSPascal Brand[DCO]: https://github.com/OP-TEE/optee_os/blob/master/Notice.md#contributions
9698a7ee79dSPascal Brand[LCStorage]: http://www.slideshare.net/linaroorg/sfo15503-secure-storage-in-optee
9708a7ee79dSPascal Brand[synchro]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#4-thread-handling
9718a7ee79dSPascal Brand[elf]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#format
9728a7ee79dSPascal Brand[optee_test]: https://github.com/OP-TEE/optee_test
9738a7ee79dSPascal Brand[manifest]: https://github.com/OP-TEE/manifest
9748a7ee79dSPascal Brand[build]: https://github.com/OP-TEE/build
9758a7ee79dSPascal Brand
97695422146SPascal Brand
97795422146SPascal Brand
97811d59085SPascal Brand# OP-TEE - version 0.3.0
97911d59085SPascal Brand
98011d59085SPascal Brand## New features
98111d59085SPascal Brand
98211d59085SPascal Brand*   Add hardware support for
98311d59085SPascal Brand	*   Mediatek MT8173 Board, ARMv8-A (plat-mediatek)
98411d59085SPascal Brand	*   Hisilicon HiKey Board, ARMv8-A (plat-hikey)
98511d59085SPascal Brand*   AArch64 build of optee_os is now possible through the configuration `CFG_ARM64_core=y`
98611d59085SPascal Brand*	Secure Storage: Data can be encrypted prior to their storage in the non-secure.
98711d59085SPascal Brand	Build is configured using `CFG_ENC_FS=y`
98811d59085SPascal Brand*	A generic boot scheme can be used. Boot configuration is commonalized. This helps
98911d59085SPascal Brand	new board support. It is applied on plat-hikey, plat-vexpress, plat-mediatek, plat-stm
99011d59085SPascal Brand    and plat-vexpress.
99111d59085SPascal Brand
99211d59085SPascal Brand## Tested on
99311d59085SPascal BrandDefinitions:
99411d59085SPascal Brand
99511d59085SPascal Brand| Type | Meaning |
99611d59085SPascal Brand| ---- | ------- |
99711d59085SPascal Brand| Standard tests | The optee_test project. |
99811d59085SPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
99911d59085SPascal Brand| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
100011d59085SPascal Brand
100111d59085SPascal Brand*	ARM Juno Board (vexpress-juno), standard tests.
100211d59085SPascal Brand*	Foundation Models (vexpress-fvp), standard tests.
100311d59085SPascal Brand*	HiKey (hikey), standard tests.
100411d59085SPascal Brand*	MT8173 (mediatek), standard tests.
100511d59085SPascal Brand*	QEMU (vexpress-qemu), standard + extended tests.
100611d59085SPascal Brand*	STM Cannes (stm-cannes), standard + extended tests.
100711d59085SPascal Brand
100811d59085SPascal Brand-------------------------------------------
100911d59085SPascal Brand
1010f5117af2SPascal Brand# OP-TEE - version 0.2.0
1011759cc499SJoakim Bech
1012f5117af2SPascal Brand## New features
1013f5117af2SPascal Brand
1014f5117af2SPascal Brand### Linux Driver Refactoring
1015f5117af2SPascal Brand
1016f5117af2SPascal BrandLinux Driver has been refactored. It is now split in two parts:
1017f5117af2SPascal Brand*	optee.ko, the generic Linux driver. It contains all functionality
1018f5117af2SPascal Brand	common to all backends.
1019f5117af2SPascal Brand*	optee_armtz.ko, a specific backend dedicated to the TrustZone optee.
1020f5117af2SPascal Brand	It depends on optee.ko.
1021f5117af2SPascal Brand
1022f5117af2SPascal BrandLoading the TrustZone optee linux driver module is now performed using
1023f5117af2SPascal Brand
1024f5117af2SPascal Brand    modprobe optee_armtz
1025f5117af2SPascal Brand
1026f5117af2SPascal BrandThanks to the dependency between the generic and the backend modules, optee.ko is then automatically loaded.
1027f5117af2SPascal Brand
1028f5117af2SPascal Brand### Misc new features
1029f5117af2SPascal Brand* support PL310 lock down at TEE boot
1030f5117af2SPascal Brand* add 64bits support (division / print)
1031f5117af2SPascal Brand
1032f5117af2SPascal Brand## Tested on
1033f5117af2SPascal BrandDefinitions:
1034f5117af2SPascal Brand
1035f5117af2SPascal Brand| Type | Meaning |
1036f5117af2SPascal Brand| ---- | ------- |
1037f5117af2SPascal Brand| Standard tests | The optee_test project. |
1038f5117af2SPascal Brand| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. |
1039f5117af2SPascal Brand| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
1040f5117af2SPascal Brand
1041f5117af2SPascal Brand*   ARM Juno Board (vexpress-juno), standard tests + extended tests.
1042f5117af2SPascal Brand
1043f5117af2SPascal Brand*   Foundation Models (vexpress-fvp), standard + extended tests.
1044f5117af2SPascal Brand
1045f5117af2SPascal Brand*   QEMU (vexpress-qemu), standard + extended tests.
1046f5117af2SPascal Brand
1047f5117af2SPascal Brand*   STM Cannes (stm-cannes), standard + extended tests.
1048f5117af2SPascal Brand
1049f5117af2SPascal Brand
105028fcee17SJerome Forissier## Issues resolved since last release
1051f5117af2SPascal Brand*	Fix user TA trace issue, in order each TA is able to select its own trace level
1052f5117af2SPascal Brand
1053f5117af2SPascal Brand
1054f5117af2SPascal Brand-------------------------------------------
1055f5117af2SPascal Brand# OP-TEE - version 0.1.0
1056f5117af2SPascal Brand
1057f5117af2SPascal Brand## New features
1058759cc499SJoakim BechBelow is a summary of the most important features added, but at the end you will
1059759cc499SJoakim Bechfind a link that present you all commits between the current and previous
1060759cc499SJoakim Bechrelease tag.
1061759cc499SJoakim Bech
1062759cc499SJoakim Bech*   GlobalPlatform Client API v1.0 support.
1063759cc499SJoakim Bech
1064759cc499SJoakim Bech*   GlobalPlatform Internal API v1.0 support.
1065759cc499SJoakim Bech
1066759cc499SJoakim Bech*   GlobalPlatform Secure Elements v1.0 support.
1067759cc499SJoakim Bech
1068759cc499SJoakim Bech*   Add hardware support for
1069759cc499SJoakim Bech
1070759cc499SJoakim Bech    *   Allwinner A80, ARMv7-A.
1071759cc499SJoakim Bech
1072759cc499SJoakim Bech    *   ARM Juno Board, ARMv8-A.
1073759cc499SJoakim Bech
1074759cc499SJoakim Bech    *   Foundation Models, ARMv8-A.
1075759cc499SJoakim Bech
1076759cc499SJoakim Bech    *   Fast Models, ARMv8-A.
1077759cc499SJoakim Bech
1078759cc499SJoakim Bech    *   QEMU, ARMv7-A.
1079759cc499SJoakim Bech
1080759cc499SJoakim Bech    *   STM Cannes, ARMv7-A.
1081759cc499SJoakim Bech
1082759cc499SJoakim Bech    *   STM Orly2, ARMv7-A.
1083759cc499SJoakim Bech
1084759cc499SJoakim Bech*   Add LibTomCrypt as the default software cryptographic library.
1085759cc499SJoakim Bech
1086759cc499SJoakim Bech*   Add cryptographic abstraction layer in on secure side to ease the use of
1087759cc499SJoakim Bech    other cryptographic software libraries or adding support for hardware
1088759cc499SJoakim Bech    acceleration.
1089759cc499SJoakim Bech
1090759cc499SJoakim Bech*   Extended cryptographic API with support for HKDF, Concat KDF and PBKDF2.
1091759cc499SJoakim Bech
1092759cc499SJoakim Bech*   SHA-1 and SHA-256 ARMv8-A crypto extension implementation.
1093759cc499SJoakim Bech
1094759cc499SJoakim Bech*   Enabled paging support in OP-TEE OS.
1095759cc499SJoakim Bech
1096759cc499SJoakim Bech*   Add support for xtest (both standard and extended) in QEMU and FVP setup
1097759cc499SJoakim Bech    scripts.
1098759cc499SJoakim Bech
1099759cc499SJoakim Bech*   Add documentation for the OS design, cryptographic abstraction layer, secure
1100759cc499SJoakim Bech    elements design, the build system, GitHub usage, key derivation extensions,
1101759cc499SJoakim Bech    ARM-Trusted Firmware usage within OP-TEE and GlobalPlatform usage within
1102759cc499SJoakim Bech    OP-TEE.
1103759cc499SJoakim Bech
1104759cc499SJoakim Bech*   Integrate support for Travis CI.
1105759cc499SJoakim Bech
1106759cc499SJoakim Bech*   [Link][github_commits_0_1_0] to a list of all commits between this and
1107759cc499SJoakim Bech    previous release.
1108759cc499SJoakim Bech
1109759cc499SJoakim Bech
1110f5117af2SPascal Brand## Tested on
1111759cc499SJoakim BechDefinitions:
1112759cc499SJoakim Bech
1113759cc499SJoakim Bech| Type | Meaning |
1114759cc499SJoakim Bech| ---- | ------- |
1115759cc499SJoakim Bech| Standard tests | The optee_test project. |
1116759cc499SJoakim Bech| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.0.0. |
1117759cc499SJoakim Bech| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. |
1118759cc499SJoakim Bech
1119759cc499SJoakim Bech*   Allwinner A80 (plat-sunxi), hello world test.
1120759cc499SJoakim Bech
1121759cc499SJoakim Bech*   ARM Juno Board (vexpress-juno), standard tests.
1122759cc499SJoakim Bech
1123759cc499SJoakim Bech*   Foundation Models (plat-vexpress-fvp), standard + extended tests
1124759cc499SJoakim Bech
1125759cc499SJoakim Bech*   QEMU (plat-vexpress-qemu), standard + extended tests (and Secure Elements
1126759cc499SJoakim Bech    tested separately).
1127759cc499SJoakim Bech
1128759cc499SJoakim Bech*   STM Cannes (plat-stm-cannes), standard + extended tests.
1129759cc499SJoakim Bech
1130759cc499SJoakim Bech
113128fcee17SJerome Forissier## Issues resolved since last release
1132759cc499SJoakim BechN/A since this is the first release tag on OP-TEE.
1133759cc499SJoakim Bech
1134759cc499SJoakim Bech
1135f5117af2SPascal Brand## Known issues
1136759cc499SJoakim Bech*   Storage is implemented, but not "Secure storage", meaning that a client
1137759cc499SJoakim Bech    needs to do encrypt files on their own before storing the files.
1138759cc499SJoakim Bech
1139759cc499SJoakim Bech*   Issue(s) open on GitHub
1140759cc499SJoakim Bech    *   [#95][pr95]: An error about building the test code of libtomcrypt.
1141759cc499SJoakim Bech
1142759cc499SJoakim Bech    *   [#149][pr149]: when testing optee os with arm trusted firmware (I
1143759cc499SJoakim Bech	utilized optee os tee.bin as bl32 image) on juno platform, I got an
1144759cc499SJoakim Bech        error.
1145759cc499SJoakim Bech
1146759cc499SJoakim Bech    *   [#161][pr161]: tee_svc_cryp.c lacks accessibility checks on
1147759cc499SJoakim Bech        user-supplied TEE_Attributes.
1148759cc499SJoakim Bech
1149759cc499SJoakim Bech[hello_world]: https://github.com/jenswi-linaro/lcu14_optee_hello_world
1150759cc499SJoakim Bech[github_commits_0_1_0]: https://github.com/OP-TEE/optee_os/compare/b01047730e77127c23a36591643eeb8bb0487d68...999e4a6c0f64d3177fd3d0db234107b6fb860884
1151759cc499SJoakim Bech[pr95]: https://github.com/OP-TEE/optee_os/issues/95
1152759cc499SJoakim Bech[pr149]: https://github.com/OP-TEE/optee_os/issues/149
1153759cc499SJoakim Bech[pr161]: https://github.com/OP-TEE/optee_os/issues/161
1154759cc499SJoakim Bech
11557583c59eSCedric Chaumont*   Global Platform Device Internal Core API v1.1
11567583c59eSCedric Chaumont    *   [#230][pr230]: Persistent object corruption support (TEE_ERROR_CORRUPT_OBJECT/_2)
11577583c59eSCedric Chaumont    *   [#230][pr230]: Persistent object access support (TEE_ERROR_STORAGE_NOT_AVAILABLE/_2)
1158