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