xref: /optee_os/CHANGELOG.md (revision 8e81e2f5366a971afdd2ac47fb8529d1def5feb0)
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