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