| b6568717 | 08-Sep-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: REE FS: bugfix error path
Fixes problem in put_dirh_primitive() when another concurrent has detected an error and thus closed ree_fs_dirh as a part of error recovery.
Acked-by: Jerome Forissi
core: REE FS: bugfix error path
Fixes problem in put_dirh_primitive() when another concurrent has detected an error and thus closed ree_fs_dirh as a part of error recovery.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jianhui Li <airbak.li@hisilicon.com> (hi3798cv200) Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU v8) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 0c07a905 | 10-Sep-2017 |
Igor Opaniuk <igor.opaniuk@linaro.org> |
arm timers: add read/write functions for counter PL1 control register
Can be used for enabling user access to both Physical/Virtual counter registers. Example of usage:
uint32_t cntkctl; cntkctl =
arm timers: add read/write functions for counter PL1 control register
Can be used for enabling user access to both Physical/Virtual counter registers. Example of usage:
uint32_t cntkctl; cntkctl = read_cntkctl(); cntkctl |= CNTKCTL_PL0VCTEN; write_cntkctl(cntkctl);
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>
show more ...
|
| 7dbdef48 | 09-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
core: arm32: remove extra 'x' in core stack dump
Commit 6693786dda1a ("core: make panic call stack consistent with abort call stack") has mistakenly introduced an extra 'x' in the TEE core stack dum
core: arm32: remove extra 'x' in core stack dump
Commit 6693786dda1a ("core: make panic call stack consistent with abort call stack") has mistakenly introduced an extra 'x' in the TEE core stack dumps. Remove it.
Fixes: 6693786dda1a ("core: make panic call stack consistent with abort call stack") Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 6693786d | 04-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
core: make panic call stack consistent with abort call stack
The call stack is formatted differently when the TEE code panics vs. when it receives an abort exception. The unfortunate consequence is,
core: make panic call stack consistent with abort call stack
The call stack is formatted differently when the TEE code panics vs. when it receives an abort exception. The unfortunate consequence is, the symbolize.py helper script cannot be used to troubleshoot panics.
Fix the issue by introducing common functions to format the call stack: print_call_stack_arm32() and print_call_stack_arm64(), and by using them in the panic and abort paths.
Suggested-by: Zeng Tao <prime.zeng@hisilicon.com> Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| eff52d1f | 04-Sep-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
core: arm64: fix print_kernel_stack()
print_kernel_stack() can only print the upmost address in the call stack, because the unwind_stack_arm64() function is passed 0 for stack and stack_size.
Use t
core: arm64: fix print_kernel_stack()
print_kernel_stack() can only print the upmost address in the call stack, because the unwind_stack_arm64() function is passed 0 for stack and stack_size.
Use the correct values, so that we can get complete stack dumps (when panic() is called for instance).
Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 2b9f2392 | 04-Sep-2017 |
Sumit Garg <sumit.garg@nxp.com> |
plat-ls: Add support for armv8 platform flavours
Added support for armv8 platform flavours as follows: - PLATFORM = ls-ls1043ardb - PLATFORM = ls-ls1046ardb
Signed-off-by: Sumit Garg <sumit.garg@nx
plat-ls: Add support for armv8 platform flavours
Added support for armv8 platform flavours as follows: - PLATFORM = ls-ls1043ardb - PLATFORM = ls-ls1046ardb
Signed-off-by: Sumit Garg <sumit.garg@nxp.com> Acked-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 417567c7 | 01-Sep-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: bugfix core_mmu_user_mapping_is_active()
Fixes race in both v7 and lpae versions of core_mmu_user_mapping_is_active() by temporarily disabling interrupts.
Reviewed-by: Etienne Carriere <etien
core: bugfix core_mmu_user_mapping_is_active()
Fixes race in both v7 and lpae versions of core_mmu_user_mapping_is_active() by temporarily disabling interrupts.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU v8) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 59ac3927 | 31-Aug-2017 |
Zeng Tao <prime.zeng@hisilicon.com> |
mk: report an error when the CFG_ARM64{32}_core both missing
When the CFG_ARM64_core and CFG_ARM32_core are both missing defined by the platform, it will raise unexpected compile errors. In this pat
mk: report an error when the CFG_ARM64{32}_core both missing
When the CFG_ARM64_core and CFG_ARM32_core are both missing defined by the platform, it will raise unexpected compile errors. In this patch, report an compile error when neither the CFG_ARM64_core nor CFG_ARM32_core is defined.
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Signed-off-by: Zeng Tao <prime.zeng@hisilicon.com>
show more ...
|
| 4c77bd9f | 24-Aug-2017 |
David Wang <david.wang@arm.com> |
Fix FIQ mask for the native interrupt handler for arm32
In Arm aarch32 mode, FIQ is not masked by hardware in IRQ mode. For GICv2, IRQ is for foreign interrupt and already masked by hardware in FIQ
Fix FIQ mask for the native interrupt handler for arm32
In Arm aarch32 mode, FIQ is not masked by hardware in IRQ mode. For GICv2, IRQ is for foreign interrupt and already masked by hardware in FIQ mode which is used for native interrupt. For GICv3, FIQ is for foreign interrupt. It's not masked by hardware in IRQ mode which is used for natvie interrupt. We need to mask it explicitly.
Signed-off-by: David Wang <david.wang@arm.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 4c7b8968 | 09-Aug-2017 |
David Wang <david.wang@arm.com> |
Disable IRQ and FIQ in IRQ/ABT/SVC/UND thread handlers for arm32
Disable native and foreign interrupts in thread handlers for arm32. The tee handlers can decide when the native interrupts can be ena
Disable IRQ and FIQ in IRQ/ABT/SVC/UND thread handlers for arm32
Disable native and foreign interrupts in thread handlers for arm32. The tee handlers can decide when the native interrupts can be enabled.
Signed-off-by: David Wang <david.wang@arm.com> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| e20d1bce | 15-May-2017 |
Akshay Bhat <akshay.bhat@timesys.com> |
plat-sam: Add support for Atmel-Microchip SAMA5D2-XULT board
Add basic support to get op-tee to run on SAMA5D2-XULT board.
The SoC is based on single core ARM Cortex-A5 and supports: ARM TrustZone
plat-sam: Add support for Atmel-Microchip SAMA5D2-XULT board
Add basic support to get op-tee to run on SAMA5D2-XULT board.
The SoC is based on single core ARM Cortex-A5 and supports: ARM TrustZone with support for configuring memory/peripherals as secure Secure RTC Secure boot On-the-fly encryption/decryption of DDR bus Tamper protection
Link: http://www.atmel.com/Images/Atmel-11267-32-bit-Cortex-A5-Microcontroller-SAMA5D2_Datasheet.pdf Signed-off-by: Akshay Bhat <akshay.bhat@timesys.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| fc5552cf | 05-Jul-2017 |
Akshay Bhat <akshay.bhat@timesys.com> |
arm: pl310: Support processors without SCU
Not all processors might have a SCU unit. So conditionally include code that configures SCU.
Signed-off-by: Akshay Bhat <akshay.bhat@timesys.com> Acked-by
arm: pl310: Support processors without SCU
Not all processors might have a SCU unit. So conditionally include code that configures SCU.
Signed-off-by: Akshay Bhat <akshay.bhat@timesys.com> Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
show more ...
|
| 8446c47c | 30-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: plat-hikey: increase CFG_TEE_RAM_VA_SIZE
Increases CFG_TEE_RAM_VA_SIZE to 2 MiB for the plat-hikey platform.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jens Wiklander
core: plat-hikey: increase CFG_TEE_RAM_VA_SIZE
Increases CFG_TEE_RAM_VA_SIZE to 2 MiB for the plat-hikey platform.
Acked-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (Hikey) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 00aa47a4 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: plat-vexpress: increase CFG_TEE_RAM_VA_SIZE
Increases CFG_TEE_RAM_VA_SIZE to 2 MiB for the plat-vexpress platforms.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Tested-by: Jens
core: plat-vexpress: increase CFG_TEE_RAM_VA_SIZE
Increases CFG_TEE_RAM_VA_SIZE to 2 MiB for the plat-vexpress platforms.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU v7) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b2087a20 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: pager: deal with large CFG_TEE_RAM_VA_SIZE
Deals with CFG_TEE_RAM_VA_SIZE > CORE_MMU_PGDIR_SIZE. This is a special problem as the pages managed by the pager then spans several translation tabl
core: pager: deal with large CFG_TEE_RAM_VA_SIZE
Deals with CFG_TEE_RAM_VA_SIZE > CORE_MMU_PGDIR_SIZE. This is a special problem as the pages managed by the pager then spans several translation tables.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| e8193433 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: pager: free pages across multiple areas
Changes tee_pager_release_phys() to handle freeing a range of pages spanning multiple areas.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org
core: pager: free pages across multiple areas
Changes tee_pager_release_phys() to handle freeing a range of pages spanning multiple areas.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c4ab3f26 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: pager: move some internal functions
Moves some internal functions inside the pager code to prepare for a future commit.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-
core: pager: move some internal functions
Moves some internal functions inside the pager code to prepare for a future commit.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| d1b0ee84 | 26-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add MEM_AREA_PAGER_VASPACE
Adds MEM_AREA_PAGER_VASPACE which is used to create empty translation tables as needed for the pager.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Si
core: add MEM_AREA_PAGER_VASPACE
Adds MEM_AREA_PAGER_VASPACE which is used to create empty translation tables as needed for the pager.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 2e928cd9 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: pager: update tee_pager_add_core_area()
All failures in tee_pager_add_core_area() are fatal. Replaces return code with void and panics on errors instead.
Reviewed-by: Etienne Carriere <etienn
core: pager: update tee_pager_add_core_area()
All failures in tee_pager_add_core_area() are fatal. Replaces return code with void and panics on errors instead.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 53dcd8f7 | 27-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: pager: hide tee_pager_tbl_info
Hides tee_pager_tbl_info and provides new needed functions.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wikl
core: pager: hide tee_pager_tbl_info
Hides tee_pager_tbl_info and provides new needed functions.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c1ac6a10 | 28-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add CORE_MMU_PGDIR_LEVEL
Adds the define CORE_MMU_PGDIR_LEVEL which indicates the level used for page directories.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: J
core: add CORE_MMU_PGDIR_LEVEL
Adds the define CORE_MMU_PGDIR_LEVEL which indicates the level used for page directories.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 6931bea3 | 30-Jun-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: make tee_mm_vcore cover TEE_RAM only
Prior to this patch was tee_mm_vcore initialized to cover the complete page directories covering TEE_RAM. With this patch tee_mm_vcore will only cover TEE_
core: make tee_mm_vcore cover TEE_RAM only
Prior to this patch was tee_mm_vcore initialized to cover the complete page directories covering TEE_RAM. With this patch tee_mm_vcore will only cover TEE_RAM in order to avoid returning unexpected addresses when allocating.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b0147799 | 28-Aug-2017 |
Jens Wiklander <jens.wiklander@linaro.org> |
plat-vextpress: fvp: map tzcdram
Map part of DRAM as TZCDRAM in sync with ARM-TF. This is needed to be able to read pageable part supplied by ARM-TF when pager is enabled.
Reviewed-by: Joakim Bech
plat-vextpress: fvp: map tzcdram
Map part of DRAM as TZCDRAM in sync with ARM-TF. This is needed to be able to read pageable part supplied by ARM-TF when pager is enabled.
Reviewed-by: Joakim Bech <joakim.bech@linaro.org> Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (FVP) Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 509a9802 | 01-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Add support for compressed early TAs
Add decompression code to the early TA loader and update the Python script accordingly. The compression algorithm is "deflate", which is used by zlib and gzip in
Add support for compressed early TAs
Add decompression code to the early TA loader and update the Python script accordingly. The compression algorithm is "deflate", which is used by zlib and gzip in particular. It allows for compression ratios comprised between 3 (for bigger TAs) and 4.7 (for smaller ones). Those numbers were observed with 32-bit TAs (QEMU).
On QEMU (armv7), the code size overhead when CFG_EARLY_TA=y, including the decompressor, is 12K when DEBUG=0 or 20K when DEBUG=1. The decompressor allocates about 39K of heap.
Another library compatible with zlib was tried for comparison [1]. The code size overhead with miniz was 8K (DEBUG=0) or 16K (DEBUG=1). On the other hand, the dynamic allocation was about 43K, so the total memory required was about same. Speed was not compared. In the end, zlib was preferred for licensing reasons and because it is widely used.
Link: [1] https://github.com/richgel999/miniz Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMU) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (QEMUv8, pager) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (D02 32/64 bits) Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (D02 32/64 bits, pager) Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|
| b3be2f66 | 02-Aug-2017 |
Jerome Forissier <jerome.forissier@linaro.org> |
Import zlib v1.2.11
Import the decompression code from zlib v1.2.11. From the project's README:
"zlib 1.2.11 is a general purpose data compression library. [...] The data format used by the zlib li
Import zlib v1.2.11
Import the decompression code from zlib v1.2.11. From the project's README:
"zlib 1.2.11 is a general purpose data compression library. [...] The data format used by the zlib library is described by RFCs (Request for Comments) 1950 to 1952 in the files rfc1950 (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format)."
This code will be used in a later commit to decompress early TAs. Only the inflate() function is needed, and the library is configured without gzip support. The source files that are not required for inflate() are left aside.
The library is licensed under a permissive license, see `zlib.h`.
Link: http://tools.ietf.org/html/rfc1950 Link: http://tools.ietf.org/html/rfc1951 Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
show more ...
|