1# OP-TEE - version 2.1.0 2 3## New features 4 5* New supported platforms: 6 * Xilinx Zynq UltraScale+ MPSOC 7 * Spreadtrum SC9860 8 9* GCC5 support 10 11* Non Linear Mapping support: In OP-TEE kernel mode, the physical to virtual 12 addresses was linear until this release, meaning the virtual addresses 13 were equal to the physical addresses. This is no more the case in this 14 release. 15 16* Font rendering routines have been introduced in order to ease an 17 implementation of Trusted UI. 18 19* File Storage: Possibility to use the normal world filesystem and the RPMB 20 implementations simultaneously. 21 22* AOSP: There is a [local manifest][aosp_local_manifest] to build OP-TEE into an AOSP build, running on HiKey. 23 Please refer to the README in that repo for instructions. 24 25* OpenEmbedded: In addition to the makefile-based build described in the optee_os README, there is an 26 [OpenEmbedded-based build][oe_build] that supports Qemu (32-bit), FVP (64-bit), and HiKey (64-bit). 27 Please refer to the README in that repo for instructions. 28 29* [Link][github_commits_2_1_0] to a list of all commits between this and 30 previous release. 31 32 33## Tested on 34Definitions: 35 36| Type | Meaning | 37| ---- | ------- | 38| Standard tests | The [optee_test][optee_test] project. | 39| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 40 41* ARM Juno Board (vexpress-juno), standard. 42* Foundation Models (vexpress-fvp), standard tests + extended tests, 43 using FVP ARM V8 Foundation Platformr0p0 (platform build 10.0.37) 44* FSL i.MX6 UltraLite EVK (imx), standard. 45* FSL ls1021a (ls-ls1021atwr), standard tests. 46* HiKey (hikey), standard + extended tests. 47* QEMU (vexpress-qemu), standard + extended tests. 48* Xilinx Zynq UltraScale+ MPSOC, standard tests 49 50Note that the following platform has not been tested: 51* MTK8173-EVB (mediatek-mt8173) 52 53 54## Known issues 55* Issue(s) open on GitHub 56 * [#868][pr868]: python-wand font generation sometimes times out 57 * [#863][pr863]: "double free or corruption" error when building optee_os 58 * [#858][pr858]: UUIDs in binary format have wrong endinanness 59 * [#857][pr857]: Formatting of UUIDs is incorrect 60 * [#847][pr847]: optee_os panic(TEE-CORE: Assertion) 61 * [#838][pr838]: TUI font rendering is _very_ slow 62 * [#814][pr814]: Persistent objects : save informations after close 63 * [#665][pr665]: xtest 1013 stalled on HiKey when log levels are 4 and optee_os is on its own UART 64 * [#506][pr506]: tee-supplicant panic & ta panic 65 66[github_commits_2_1_0]: https://github.com/OP-TEE/optee_os/compare/2.0.0...2.1.0 67[pr868]: https://github.com/OP-TEE/optee_os/issues/868 68[pr863]: https://github.com/OP-TEE/optee_os/issues/863 69[pr858]: https://github.com/OP-TEE/optee_os/issues/858 70[pr857]: https://github.com/OP-TEE/optee_os/issues/857 71[pr847]: https://github.com/OP-TEE/optee_os/issues/847 72[pr838]: https://github.com/OP-TEE/optee_os/issues/838 73[pr814]: https://github.com/OP-TEE/optee_os/issues/814 74[pr665]: https://github.com/OP-TEE/optee_os/issues/665 75[aosp_local_manifest]: https://github.com/linaro-swg/optee_android_manifest 76[oe_build]: https://github.com/linaro-swg/oe-optee 77 78# OP-TEE - version 2.0.0 79 80## New features 81 82* Generic driver: A new generic TEE driver is in the process of being 83 [upstreamed][gendrv_v9]. 84 In this release, [OP-TEE/optee_linuxdriver][optee_linuxdriver] is no more used. 85 Instead, linux v4.5 is being patched using the proposed Generic TEE Driver, 86 as it can be found in [https://github.com/linaro-swg/linux/tree/optee][linux_optee] 87 88* RPMB support: Secure Storage can now use Replay Protected Memory Block (RPMB) partition 89 of an eMMC device. Check the [full documentation][rpmb_doc] 90 91* Hard-float ABI is now available. 92 93* [Link][github_commits_2_0_0] to a list of all commits between this and 94 previous release. 95 96 97## Tested on 98Definitions: 99 100| Type | Meaning | 101| ---- | ------- | 102| Standard tests | The [optee_test][optee_test] project. | 103| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 104 105* ARM Juno Board (vexpress-juno), standard. 106* Foundation Models (vexpress-fvp), standard tests + extended tests, 107 using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40) 108* FSL ls1021a (ls-ls1021atwr), standard. 109* HiKey (hikey), standard. 110* MTK8173-EVB (mediatek-mt8173), standard. 111* QEMU (vexpress-qemu), standard + extended tests. 112* STM Cannes (stm-cannes), standard + extended tests. 113 114## Known issues 115* Issue(s) open on GitHub 116 * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant 117 * [#506][pr506]: tee-supplicant panic & ta panic 118 119[github_commits_2_0_0]: https://github.com/OP-TEE/optee_os/compare/1.1.0...2.0.0 120[rpmb_doc]: https://github.com/OP-TEE/optee_os/blob/master/documentation/secure_storage_rpmb.md 121[optee_linuxdriver]: https://github.com/OP-TEE/optee_linuxdriver 122[gendrv_v9]: https://lkml.org/lkml/2016/4/1/205 123[linux_optee]: https://github.com/linaro-swg/linux/tree/optee 124 125 126# OP-TEE - version 1.1.0 127 128 129## New features 130 131* Softfloat library: floating point support is now available in 32bits TA. 132 133* Support running 64-bits TA: on ARMv8-A platform, TA can be compiled in 134 AArch32 and/or in AArch64 in case the core is compiled in AArch64. 135 An example can be found in HiKey configuration file. Using the following 136 excerpt code, the user TA libraries are compiled in both AArch32 and 137 AArch64, and can be found in `out/arm-plat-hikey/export-ta_arm32` and 138 `out/arm-plat-hikey/export-ta_arm64` 139 140``` 141 ta-targets = ta_arm32 142 ta-targets += ta_arm64 143``` 144 145* Concurrent TA support: multiple TA can run in parallel on 146 several cores. 147 148* New tests added in xtest test suite: concurrent TA (xtest 1013), 149 floating point tests (xtest 1006 and os_test TA) and corruption 150 file storage (xtest 20000) 151 152* [Link][github_commits_1_1_0] to a list of all commits between this and 153 previous release. 154 155 156## Tested on 157Definitions: 158 159| Type | Meaning | 160| ---- | ------- | 161| Standard tests | The [optee_test][optee_test] project. | 162| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 163| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. | 164 165* Foundation Models (vexpress-fvp), standard tests + extended tests, 166 using FVP ARM V8 Foundation Platformr0p0 (platform build 9.5.40) 167* HiKey (hikey), standard + extended tests. 168* MT8173 (mediatek), standard tests. 169* QEMU (vexpress-qemu), standard + extended tests. 170* STM Cannes (stm-cannes), standard + extended tests. 171 172## Known issues 173* Secure Storage is implemented, but note that anti-rollback protection 174 is not implemented yet. 175 176* Issue(s) open on GitHub 177 * [#40][prld40] BUG_ON() when re-using RPC buffer to tee-supplicant 178 * [#296][pr296]: Connecting RPMB to the storage APIs. 179 * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries 180 * [#506][pr506]: tee-supplicant panic & ta panic 181 182[prld40]: https://github.com/OP-TEE/optee_linuxdriver/issues/40 183[pr506]: https://github.com/OP-TEE/optee_os/issues/506 184[github_commits_1_1_0]: https://github.com/OP-TEE/optee_os/compare/1.0.1...1.1.0 185 186 187 188# OP-TEE - version 1.0.0 189 190OP-TEE is now maintained by Linaro. Contributors do not need to 191sign a CLA anymore, but must follow the rules of the [DCO][DCO] 192(Developer Certificate of Origin) instead. 193 194 195## New features 196 197* Add hardware support for Texas Instruments DRA7xx, ARMv7 (plat-ti) 198 199* GlobalPlatform™ TEE Internal Core API Specification v1.1, 200 including ECC algorithms. 201 202* Secure Storage: Files stored by the REE are now encrypted. Operations 203 are made atomic in order to prevent inconsistencies in case of errors 204 during the storage operations. [Slides][LCStorage] describing the 205 Secure Storage have been presented at the Linaro Connect SFO15. 206 207* Change of format of the Trusted Applications: they follow a 208 [signed ELF format][elf] 209 210* Rework thread [synchronization][synchro] in optee_os. 211 212* Use of ARMv8 native cryptographic support. 213 214* [OP-TEE/optee_test][optee_test] test suite is released. 215 216* Introduce [OP-TEE/manifest][manifest] and [OP-TEE/build][build] 217 to setup and build QEMU, FVP, HiKey and Mediatek platforms. Setup scripts 218 that used to be in optee_os have been removed, except for Juno board. 219 220* [Link][github_commits_1_0_0] to a list of all commits between this and 221 previous release. 222 223 224## Tested on 225Definitions: 226 227| Type | Meaning | 228| ---- | ------- | 229| Standard tests | The [optee_test][optee_test] project. | 230| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 231| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. | 232 233* ARM Juno Board (vexpress-juno), standard + extended tests. 234* Foundation Models (vexpress-fvp), standard tests. 235* HiKey (hikey), standard + extended tests. 236* MT8173 (mediatek), standard tests. 237* QEMU (vexpress-qemu), standard + extended tests. 238* STM Cannes (stm-cannes), standard + extended tests. 239 240## Known issues 241* Secure Storage is implemented, but note that anti-rollback protection 242 is not implemented yet. 243 244* Issue(s) open on GitHub 245 * [#210][pr210]: libteec.so 32-bit does not communicate well 246 with 64-bit kernel module 247 * [#296][pr296]: Connecting RPMB to the storage APIs. 248 * [#493][pr493]: setup_juno_optee: unable to find pre-built binaries 249 * [#494][pr494]: HiKey: xtest 7671 fails (1.0.0-rc2) 250 251[pr210]: https://github.com/OP-TEE/optee_os/issues/210 252[pr296]: https://github.com/OP-TEE/optee_os/issues/296 253[pr493]: https://github.com/OP-TEE/optee_os/issues/493 254[pr494]: https://github.com/OP-TEE/optee_os/issues/494 255[github_commits_1_0_0]: https://github.com/OP-TEE/optee_os/compare/0.3.0...1.0.0 256[DCO]: https://github.com/OP-TEE/optee_os/blob/master/Notice.md#contributions 257[LCStorage]: http://www.slideshare.net/linaroorg/sfo15503-secure-storage-in-optee 258[synchro]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#4-thread-handling 259[elf]: https://github.com/OP-TEE/optee_os/blob/master/documentation/optee_design.md#format 260[optee_test]: https://github.com/OP-TEE/optee_test 261[manifest]: https://github.com/OP-TEE/manifest 262[build]: https://github.com/OP-TEE/build 263 264 265 266# OP-TEE - version 0.3.0 267 268## New features 269 270* Add hardware support for 271 * Mediatek MT8173 Board, ARMv8-A (plat-mediatek) 272 * Hisilicon HiKey Board, ARMv8-A (plat-hikey) 273* AArch64 build of optee_os is now possible through the configuration `CFG_ARM64_core=y` 274* Secure Storage: Data can be encrypted prior to their storage in the non-secure. 275 Build is configured using `CFG_ENC_FS=y` 276* A generic boot scheme can be used. Boot configuration is commonalized. This helps 277 new board support. It is applied on plat-hikey, plat-vexpress, plat-mediatek, plat-stm 278 and plat-vexpress. 279 280## Tested on 281Definitions: 282 283| Type | Meaning | 284| ---- | ------- | 285| Standard tests | The optee_test project. | 286| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 287| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. | 288 289* ARM Juno Board (vexpress-juno), standard tests. 290* Foundation Models (vexpress-fvp), standard tests. 291* HiKey (hikey), standard tests. 292* MT8173 (mediatek), standard tests. 293* QEMU (vexpress-qemu), standard + extended tests. 294* STM Cannes (stm-cannes), standard + extended tests. 295 296------------------------------------------- 297 298# OP-TEE - version 0.2.0 299 300## New features 301 302### Linux Driver Refactoring 303 304Linux Driver has been refactored. It is now split in two parts: 305* optee.ko, the generic Linux driver. It contains all functionality 306 common to all backends. 307* optee_armtz.ko, a specific backend dedicated to the TrustZone optee. 308 It depends on optee.ko. 309 310Loading the TrustZone optee linux driver module is now performed using 311 312 modprobe optee_armtz 313 314Thanks to the dependency between the generic and the backend modules, optee.ko is then automatically loaded. 315 316### Misc new features 317* support PL310 lock down at TEE boot 318* add 64bits support (division / print) 319 320## Tested on 321Definitions: 322 323| Type | Meaning | 324| ---- | ------- | 325| Standard tests | The optee_test project. | 326| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.1.0.4. | 327| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. | 328 329* ARM Juno Board (vexpress-juno), standard tests + extended tests. 330 331* Foundation Models (vexpress-fvp), standard + extended tests. 332 333* QEMU (vexpress-qemu), standard + extended tests. 334 335* STM Cannes (stm-cannes), standard + extended tests. 336 337 338## Issues resolved since last release 339* Fix user TA trace issue, in order each TA is able to select its own trace level 340 341 342------------------------------------------- 343#OP-TEE - version 0.1.0 344 345## New features 346Below is a summary of the most important features added, but at the end you will 347find a link that present you all commits between the current and previous 348release tag. 349 350* GlobalPlatform Client API v1.0 support. 351 352* GlobalPlatform Internal API v1.0 support. 353 354* GlobalPlatform Secure Elements v1.0 support. 355 356* Add hardware support for 357 358 * Allwinner A80, ARMv7-A. 359 360 * ARM Juno Board, ARMv8-A. 361 362 * Foundation Models, ARMv8-A. 363 364 * Fast Models, ARMv8-A. 365 366 * QEMU, ARMv7-A. 367 368 * STM Cannes, ARMv7-A. 369 370 * STM Orly2, ARMv7-A. 371 372* Add LibTomCrypt as the default software cryptographic library. 373 374* Add cryptographic abstraction layer in on secure side to ease the use of 375 other cryptographic software libraries or adding support for hardware 376 acceleration. 377 378* Extended cryptographic API with support for HKDF, Concat KDF and PBKDF2. 379 380* SHA-1 and SHA-256 ARMv8-A crypto extension implementation. 381 382* Enabled paging support in OP-TEE OS. 383 384* Add support for xtest (both standard and extended) in QEMU and FVP setup 385 scripts. 386 387* Add documentation for the OS design, cryptographic abstraction layer, secure 388 elements design, the build system, GitHub usage, key derivation extensions, 389 ARM-Trusted Firmware usage within OP-TEE and GlobalPlatform usage within 390 OP-TEE. 391 392* Integrate support for Travis CI. 393 394* [Link][github_commits_0_1_0] to a list of all commits between this and 395 previous release. 396 397 398## Tested on 399Definitions: 400 401| Type | Meaning | 402| ---- | ------- | 403| Standard tests | The optee_test project. | 404| Extended tests | optee_test with tests from the GlobalPlatform™ TEE Initial Configuration Test Suite v1.0.0. | 405| Hello world test | Plain hello world Trusted Application such as [this][hello_world]. | 406 407* Allwinner A80 (plat-sunxi), hello world test. 408 409* ARM Juno Board (vexpress-juno), standard tests. 410 411* Foundation Models (plat-vexpress-fvp), standard + extended tests 412 413* QEMU (plat-vexpress-qemu), standard + extended tests (and Secure Elements 414 tested separately). 415 416* STM Cannes (plat-stm-cannes), standard + extended tests. 417 418 419## Issues resolved since last release 420N/A since this is the first release tag on OP-TEE. 421 422 423## Known issues 424* Storage is implemented, but not "Secure storage", meaning that a client 425 needs to do encrypt files on their own before storing the files. 426 427* Issue(s) open on GitHub 428 * [#95][pr95]: An error about building the test code of libtomcrypt. 429 430 * [#149][pr149]: when testing optee os with arm trusted firmware (I 431 utilized optee os tee.bin as bl32 image) on juno platform, I got an 432 error. 433 434 * [#161][pr161]: tee_svc_cryp.c lacks accessibility checks on 435 user-supplied TEE_Attributes. 436 437[hello_world]: https://github.com/jenswi-linaro/lcu14_optee_hello_world 438[github_commits_0_1_0]: https://github.com/OP-TEE/optee_os/compare/b01047730e77127c23a36591643eeb8bb0487d68...999e4a6c0f64d3177fd3d0db234107b6fb860884 439[pr95]: https://github.com/OP-TEE/optee_os/issues/95 440[pr149]: https://github.com/OP-TEE/optee_os/issues/149 441[pr161]: https://github.com/OP-TEE/optee_os/issues/161 442 443* Global Platform Device Internal Core API v1.1 444 * [#230][pr230]: Persistent object corruption support (TEE_ERROR_CORRUPT_OBJECT/_2) 445 * [#230][pr230]: Persistent object access support (TEE_ERROR_STORAGE_NOT_AVAILABLE/_2) 446