History log of /optee_os/lib/ (Results 651 – 675 of 883)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
dc45460917-Aug-2017 Jerome Forissier <jerome.forissier@linaro.org>

libutee: provide an implementation of putchar()

Calling printf() from a TA to print a single character results in a
linker error:

39 TEE_Result TA_CreateEntryPoint(void)
40 {
41 pr

libutee: provide an implementation of putchar()

Calling printf() from a TA to print a single character results in a
linker error:

39 TEE_Result TA_CreateEntryPoint(void)
40 {
41 printf(".");
42 /* ... */
43 }

hello_world_ta.o: In function `TA_CreateEntryPoint':
hello_world_ta.c:41: undefined reference to `putchar'

In this case, the compiler has optimized the printf() call into a call
to putchar(), assuming that we have a C library and that it complies to
the relevant standards (so that printf() and putchar() may be used
interchangeably).

One way to fix the issue is to prevent such optimizations by using
-fno-builtin or -ffreestanding, at the cost of slightly larger code
size and possibly reduced performance.

Another option is to simply provide the missing putchar() function. It
is the purpose of this commit.

Reported-by: Zeng Tao <prime.zeng@hisilicon.com>
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 ...


/optee_os/.travis.yml
/optee_os/MAINTAINERS.md
/optee_os/README.md
/optee_os/core/arch/arm/arm.mk
/optee_os/core/arch/arm/include/kernel/delay.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/sm/psci.h
/optee_os/core/arch/arm/kernel/abort.c
/optee_os/core/arch/arm/kernel/asm-defines.c
/optee_os/core/arch/arm/kernel/delay.c
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_private.h
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-d02/conf.mk
/optee_os/core/arch/arm/plat-d02/platform_config.h
/optee_os/core/arch/arm/plat-hikey/conf.mk
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-hikey/platform_config.h
/optee_os/core/arch/arm/plat-hikey/sub.mk
/optee_os/core/arch/arm/plat-imx/imx-regs.h
/optee_os/core/arch/arm/plat-rockchip/common.h
/optee_os/core/arch/arm/plat-rockchip/conf.mk
/optee_os/core/arch/arm/plat-rockchip/core_pos_a32.S
/optee_os/core/arch/arm/plat-rockchip/cru.h
/optee_os/core/arch/arm/plat-rockchip/grf.h
/optee_os/core/arch/arm/plat-rockchip/kern.ld.S
/optee_os/core/arch/arm/plat-rockchip/link.mk
/optee_os/core/arch/arm/plat-rockchip/main.c
/optee_os/core/arch/arm/plat-rockchip/plat_init.S
/optee_os/core/arch/arm/plat-rockchip/platform.c
/optee_os/core/arch/arm/plat-rockchip/platform_config.h
/optee_os/core/arch/arm/plat-rockchip/psci_rk322x.c
/optee_os/core/arch/arm/plat-rockchip/sub.mk
/optee_os/core/arch/arm/pta/benchmark.c
/optee_os/core/arch/arm/sm/psci.c
/optee_os/core/drivers/imx_snvs.c
/optee_os/core/drivers/serial8250_uart.c
/optee_os/core/drivers/sub.mk
/optee_os/core/include/drivers/imx_snvs.h
libutee/trace_ext.c
libutils/isoc/include/stdio.h
/optee_os/mk/aosp_optee.mk
/optee_os/mk/gcc.mk
/optee_os/ta/ta.mk
70f0315014-Jul-2017 Jens Wiklander <jens.wiklander@linaro.org>

libzlib: gcc7 ready

Updates compiler flags to make libzlib gcc7 ready.

Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

d31b000614-Jul-2017 Jens Wiklander <jens.wiklander@linaro.org>

libpng: gcc7 ready

Updates compiler flags to make libpng gcc7 ready.

Reviewed-by: Igor Opaniuk <igor.opaniuk@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>


/optee_os/.travis.yml
/optee_os/CHANGELOG.md
/optee_os/MAINTAINERS.md
/optee_os/README.md
/optee_os/core/arch/arm/include/arm.h
/optee_os/core/arch/arm/include/arm32.h
/optee_os/core/arch/arm/include/arm32_macros.S
/optee_os/core/arch/arm/include/arm64.h
/optee_os/core/arch/arm/include/kernel/cache_helpers.h
/optee_os/core/arch/arm/include/kernel/spinlock.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/tlb_helpers.h
/optee_os/core/arch/arm/include/kernel/wait_queue.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/include/sm/psci.h
/optee_os/core/arch/arm/kernel/abort.c
/optee_os/core/arch/arm/kernel/cache_helpers_a32.S
/optee_os/core/arch/arm/kernel/cache_helpers_a64.S
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/generic_entry_a32.S
/optee_os/core/arch/arm/kernel/generic_entry_a64.S
/optee_os/core/arch/arm/kernel/kern.ld.S
/optee_os/core/arch/arm/kernel/link.mk
/optee_os/core/arch/arm/kernel/link_dummies.c
/optee_os/core/arch/arm/kernel/mutex.c
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/tlb_helpers_a32.S
/optee_os/core/arch/arm/kernel/tlb_helpers_a64.S
/optee_os/core/arch/arm/kernel/trace_ext.c
/optee_os/core/arch/arm/kernel/unwind_arm32.c
/optee_os/core/arch/arm/kernel/wait_queue.c
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/mobj.c
/optee_os/core/arch/arm/mm/tee_mmu.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-hikey/hikey_peripherals.h
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-hikey/spi_test.c
/optee_os/core/arch/arm/plat-imx/a7_plat_init.S
/optee_os/core/arch/arm/plat-imx/conf.mk
/optee_os/core/arch/arm/plat-imx/config/config_imx7.h
/optee_os/core/arch/arm/plat-imx/gpcv2.c
/optee_os/core/arch/arm/plat-imx/imx-common.c
/optee_os/core/arch/arm/plat-imx/imx-regs.h
/optee_os/core/arch/arm/plat-imx/imx.h
/optee_os/core/arch/arm/plat-imx/imx6.c
/optee_os/core/arch/arm/plat-imx/imx7.c
/optee_os/core/arch/arm/plat-imx/main.c
/optee_os/core/arch/arm/plat-imx/platform_config.h
/optee_os/core/arch/arm/plat-imx/psci.c
/optee_os/core/arch/arm/plat-imx/sub.mk
/optee_os/core/arch/arm/plat-stm/platform_config.h
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/sm/psci-helper.S
/optee_os/core/arch/arm/sm/sub.mk
/optee_os/core/arch/arm/tee/arch_svc.c
/optee_os/core/arch/arm/tee/entry_std.c
/optee_os/core/arch/arm/tee/init.c
/optee_os/core/arch/arm/tee/svc_dummy.c
/optee_os/core/include/kernel/msg_param.h
/optee_os/core/include/optee_msg.h
/optee_os/core/include/tee/fs_dirfile.h
/optee_os/core/include/tee/tee_fs.h
/optee_os/core/kernel/msg_param.c
/optee_os/core/kernel/ubsan.c
/optee_os/core/tee/fs_dirfile.c
/optee_os/core/tee/tee_ree_fs.c
/optee_os/core/tee/tee_rpmb_fs.c
/optee_os/core/tee/tee_svc.c
/optee_os/documentation/github.md
/optee_os/documentation/optee_design.md
/optee_os/documentation/secure_storage.md
/optee_os/documentation/secure_storage_rpmb.md
libpng/sub.mk
/optee_os/mk/config.mk
/optee_os/scripts/gen_hashed_bin.py
40b1b28122-Mar-2017 Joakim Bech <joakim.bech@linaro.org>

libmpa: Implement Montgomery ladder

The mpa_exp_mod() function implements a LtoR algorithm. The LtoR
algorithm is sensitive to timing attacks since it leaks information
about the exponent since it's

libmpa: Implement Montgomery ladder

The mpa_exp_mod() function implements a LtoR algorithm. The LtoR
algorithm is sensitive to timing attacks since it leaks information
about the exponent since it's doing a different amount of work in each
loop when doing the modular exponentiation. It will always do a square
in each loop, but it will also do an additional multiply when the
exponent bit k=1.

This patch implements the Montgomery ladder (and thereby replaces the
old LtoR implementation), which always does the same amount of
operations in each loop and thereby make it more robust to timing
attacks.

Fixes: OP-TEE-2016-0002 which was reported by Applus+ Laboratories.

Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey, GP)
Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (b2260, GP)

show more ...

13c9b83113-Feb-2017 Joakim Bech <joakim.bech@linaro.org>

ltc: Implement mp_rand for mpa_desc

When enabling the flag LTC_RSA_BLINDING the code uses the mp_rand()
function, which isn't implemented for the mpa_desc descriptor. Implement
it as rand() in mpa_d

ltc: Implement mp_rand for mpa_desc

When enabling the flag LTC_RSA_BLINDING the code uses the mp_rand()
function, which isn't implemented for the mpa_desc descriptor. Implement
it as rand() in mpa_desc and mpa_get_random_digits() in libmpa.

Fixes: OP-TEE-2016-0003 which was reported by Applus+ Laboratories.

Signed-off-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey, GP)
Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (b2260, GP)

show more ...

2bfab75613-Jun-2017 Jerome Forissier <jerome.forissier@linaro.org>

trace.c: show file/line info for flow, debug and error messages

Since commit f4aa5b11f9a3 ("Update trace format to be less verbose in
INFO and ERROR levels"), INFO and ERROR messages don't show sour

trace.c: show file/line info for flow, debug and error messages

Since commit f4aa5b11f9a3 ("Update trace format to be less verbose in
INFO and ERROR levels"), INFO and ERROR messages don't show source file
and line information by default, while message with lower severity
(DEBUG and FLOW) do contain such information. While it is OK for INFO,
it turns out to be inconvenient for ERRORs during development, because
one typically wants to be able to quickly locate the source of errors.
This patch fixes the problem by introducing a mask rather than a level
to control the long output format. This allows individual selection of
which level should use a long vs. short format.
The compile-time setting CFG_MSG_LONG_PREFIX_THRESHOLD is replaced by
CFG_MSG_LONG_PREFIX_MASK with default value 0x1a (= BIT(TRACE_ERROR) |
BIT(TRACE_DEBUG) | BIT(TRACE_FLOW)).

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

57aabac502-Jun-2017 Bogdan Liulko <bogdan.liulko@globallogic.com>

Remove buffering for AES CTR

CTR mode of AES algorithm turns block cipher into stream cipher.
It means that input data can has any size independent from block
size. It must be processed and result c

Remove buffering for AES CTR

CTR mode of AES algorithm turns block cipher into stream cipher.
It means that input data can has any size independent from block
size. It must be processed and result ciphertext must be
generated after each TEE_CipherUpdate function call. That is why
it is incorrect to apply for AES CTR the input buffering on
TEE_CipherUpdate call when size is not multiple of block size.

Signed-off-by: Bogdan Liulko <bogdan.liulko@globallogic.com>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey)
Tested-by: Bogdan Liulko <bogdan.liulko@globallogic.com> (R-Car)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

afc0c18231-May-2017 Bogdan Liulko <bogdan.liulko@globallogic.com>

libutee: Remove buffering for AES GCM

GCM mode of AES algorithm is essentially a stream cipher. It means
that there is no requirements for input data size related to block
size. And every time when

libutee: Remove buffering for AES GCM

GCM mode of AES algorithm is essentially a stream cipher. It means
that there is no requirements for input data size related to block
size. And every time when AEUpdate is called input data must be
processed and output immediately generated. That is why
it is incorrect to apply for AES GCM the input buffering on
AEUpdate call when size is not multiple of block size.

Signed-off-by: Bogdan Liulko <bogdan.liulko@globallogic.com>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey)
Tested-by: Bogdan Liulko <bogdan.liulko@globallogic.com> (R-Car)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>

show more ...

d5b65f3009-Nov-2016 Igor Opaniuk <igor.opaniuk@linaro.org>

OP-TEE Benchmark

OP-TEE Benchmark feature provides timestamp data for the roundtrip time
from libteec to OP-TEE OS core.

Benchmark PTA handles registration/unregistration commands of timestamp
buff

OP-TEE Benchmark

OP-TEE Benchmark feature provides timestamp data for the roundtrip time
from libteec to OP-TEE OS core.

Benchmark PTA handles registration/unregistration commands of timestamp
buffer, invoked by optee_benchmark NW application, and performs
registration of timestamp buffer in the linux kernel optee driver via
RPC call.

To enable this feature set CFG_TEE_BENCHMARK compile flag to "y".

Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
Signed-off-by: Igor Opaniuk <igor.opaniuk@linaro.org>

show more ...

ba6d8df924-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

libutils: sparse fix: DETECTNULL() macro

Fixes the DETECTNULL() macro used in certain functions imported from
newlib.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jens Wik

libutils: sparse fix: DETECTNULL() macro

Fixes the DETECTNULL() macro used in certain functions imported from
newlib.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (Juno)
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

a3c0888324-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

Sparse fix: _assert_break()

Moves the __noreturn attribute for declaration of _assert_break() to
before the function name instead which enables sparse to recognize the
attribute properly.

Reviewed-

Sparse fix: _assert_break()

Moves the __noreturn attribute for declaration of _assert_break() to
before the function name instead which enables sparse to recognize the
attribute properly.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

2fa93c7424-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

Sparse fix: setjmp.h

Fixes all sparse warnings in setjmp.h

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

c2177a2a24-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

Sparse fix __HAVE_BUILTIN_OVERFLOW

Never define __HAVE_BUILTIN_OVERFLOW if __CHECKER__ is defined.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wi

Sparse fix __HAVE_BUILTIN_OVERFLOW

Never define __HAVE_BUILTIN_OVERFLOW if __CHECKER__ is defined.

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

2366012108-Mar-2017 Jerome Forissier <jerome.forissier@linaro.org>

core: remove __early_bss

Initialize the .bss section early from assembler before entering C
code. As a result, the __early_bss qualifier is not needed anymore.
Remove it, as well as the related symb

core: remove __early_bss

Initialize the .bss section early from assembler before entering C
code. As a result, the __early_bss qualifier is not needed anymore.
Remove it, as well as the related symbols (__early_bss_start and
__early_bss_end).

This makes the code simpler hence easier to maintain, at the expense
of initialization time, since .bss is cleared before CPU caches are
turned on (and doing it later would mean some C function have been
called already). Here are some performance numbers measured on HiKey.
The "memset" column measures the time it takes to clear .bss in C,
without this patch. The "assembly" column reports the time taken by the
clear_bss loop in this patch. Timings were performed using CNTPCT.
Worst case is a ~1 ms overhead in boot time.

memset(): | assembly:
ms (bytes) | ms (bytes)
--------------+--------------
Aarch64 0.30 (72824) | 0.08 (73528)
Aarch32 0.27 (65016) | 1.24 (65408)
Aarch32/pager 0.03 (11328) | 0.23 (11736)

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> (HiKey 32/64)
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey/pager)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/core/arch/arm/cpu/cortex-a15.mk
/optee_os/core/arch/arm/cpu/cortex-a7.mk
/optee_os/core/arch/arm/cpu/cortex-a9.mk
/optee_os/core/arch/arm/cpu/cortex-armv8-0.mk
/optee_os/core/arch/arm/include/arm64.h
/optee_os/core/arch/arm/include/kernel/generic_boot.h
/optee_os/core/arch/arm/kernel/elf_load.c
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/generic_entry_a32.S
/optee_os/core/arch/arm/kernel/generic_entry_a64.S
/optee_os/core/arch/arm/kernel/kern.ld.S
/optee_os/core/arch/arm/kernel/link.mk
/optee_os/core/arch/arm/kernel/link_dummy.ld
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/tee_mm.c
/optee_os/core/arch/arm/mm/tee_mmu.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-d02/conf.mk
/optee_os/core/arch/arm/plat-d02/main.c
/optee_os/core/arch/arm/plat-hikey/conf.mk
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-imx/conf.mk
/optee_os/core/arch/arm/plat-imx/imx_pl310.c
/optee_os/core/arch/arm/plat-imx/main.c
/optee_os/core/arch/arm/plat-imx/psci.c
/optee_os/core/arch/arm/plat-ls/conf.mk
/optee_os/core/arch/arm/plat-ls/main.c
/optee_os/core/arch/arm/plat-mediatek/conf.mk
/optee_os/core/arch/arm/plat-mediatek/main.c
/optee_os/core/arch/arm/plat-rcar/conf.mk
/optee_os/core/arch/arm/plat-rcar/main.c
/optee_os/core/arch/arm/plat-rpi3/conf.mk
/optee_os/core/arch/arm/plat-rpi3/main.c
/optee_os/core/arch/arm/plat-sprd/conf.mk
/optee_os/core/arch/arm/plat-sprd/console.c
/optee_os/core/arch/arm/plat-stm/conf.mk
/optee_os/core/arch/arm/plat-stm/main.c
/optee_os/core/arch/arm/plat-stm/rng_support.c
/optee_os/core/arch/arm/plat-sunxi/conf.mk
/optee_os/core/arch/arm/plat-sunxi/main.c
/optee_os/core/arch/arm/plat-ti/conf.mk
/optee_os/core/arch/arm/plat-ti/main.c
/optee_os/core/arch/arm/plat-ti/ti_pl310.c
/optee_os/core/arch/arm/plat-vexpress/conf.mk
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/plat-vexpress/sub.mk
/optee_os/core/arch/arm/plat-zynq7k/conf.mk
/optee_os/core/arch/arm/plat-zynq7k/main.c
/optee_os/core/arch/arm/plat-zynqmp/conf.mk
/optee_os/core/arch/arm/plat-zynqmp/main.c
/optee_os/core/arch/arm/sm/sm_a32.S
/optee_os/core/include/keep.h
/optee_os/core/kernel/console.c
/optee_os/core/kernel/tee_ta_manager.c
/optee_os/core/tee/tee_svc.c
/optee_os/core/tee/tee_svc_storage.c
/optee_os/documentation/porting_guidelines.md
libutils/ext/include/compiler.h
/optee_os/scripts/gen_ld_sects.py
ce0d8e2d22-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

util: add macros for arithmetics with overflow checking

Compiler builtin support for checking overflow of addition, subtraction
and multiplication is used if available. If unavailable a fallback
imp

util: add macros for arithmetics with overflow checking

Compiler builtin support for checking overflow of addition, subtraction
and multiplication is used if available. If unavailable a fallback
implementation using macros is used instead.

Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey 32/64)
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

31a2964211-May-2017 Jerome Forissier <jerome.forissier@linaro.org>

core: dump call stack of user TAs on abort

Update the abort handling code in the TEE core to support unwinding
the user mode stack in addition to the kernel stack. unwind_arm32.c is
modified slightl

core: dump call stack of user TAs on abort

Update the abort handling code in the TEE core to support unwinding
the user mode stack in addition to the kernel stack. unwind_arm32.c is
modified slightly so that it can be built for AArch64. This allows a
64-bit TEE core to dump both 32- and 64-bit TAs.

Paged TAs (CFG_PAGED_USER_TA=y) cannot currently be unwound, because
the code is not ready to handle the page faults that might occur as
the unwinding tables are accessed.

CFG_CORE_UNWIND is renamed to CFG_UNWIND since it enables both the
kernel and user TA stack dumps. It is still set automatically when
CFG_TEE_CORE_DEBUG=y.

32-bit user TAs have to be compiled with `-funwind-tables`, otherwise
the call stack can't be unwound and the abort reports will not show a
call stack .The TA dev kit takes care of adding this flag automatically
when CFG_UNWIND=y.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jerome Forissier <jerome.forissier@linaro.org> (HiKey)
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/Notice.md
/optee_os/README.md
/optee_os/core/arch/arm/arm.mk
/optee_os/core/arch/arm/include/kernel/abort.h
/optee_os/core/arch/arm/include/kernel/generic_boot.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/unwind.h
/optee_os/core/arch/arm/include/kernel/user_ta.h
/optee_os/core/arch/arm/include/mm/core_memprot.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/kernel/abort.c
/optee_os/core/arch/arm/kernel/elf_common.h
/optee_os/core/arch/arm/kernel/elf_load.c
/optee_os/core/arch/arm/kernel/elf_load.h
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/generic_entry_a32.S
/optee_os/core/arch/arm/kernel/generic_entry_a64.S
/optee_os/core/arch/arm/kernel/kern.ld.S
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/unwind_arm32.c
/optee_os/core/arch/arm/kernel/unwind_arm64.c
/optee_os/core/arch/arm/kernel/user_ta.c
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/mobj.c
/optee_os/core/arch/arm/plat-hikey/conf.mk
/optee_os/core/arch/arm/plat-hikey/platform_config.h
/optee_os/core/arch/arm/plat-sunxi/kern.ld.S
/optee_os/core/arch/arm/plat-ti/platform_config.h
/optee_os/core/arch/arm/tee/entry_std.c
/optee_os/core/include/keep.h
/optee_os/core/include/optee_msg.h
/optee_os/core/include/tee/fs_dirfile.h
/optee_os/core/tee/fs_dirfile.c
/optee_os/core/tee/tee_ree_fs.c
libutee/arch/arm/user_ta_entry.c
libutils/ext/arch/arm/aeabi_unwind.c
libutils/ext/arch/arm/sub.mk
libutils/ext/include/trace.h
/optee_os/mk/config.mk
/optee_os/scripts/checkpatch_inc.sh
63988d7c09-May-2017 Jens Wiklander <jens.wiklander@linaro.org>

Fix ROUNDUP()/ROUNDDOWN() macros

Fixes the ROUNDUP()/ROUNDDOWN() macros to mask internally with a bitmask
that is of the same size as the value that is to be rounded. Without
this patch the mask use

Fix ROUNDUP()/ROUNDDOWN() macros

Fixes the ROUNDUP()/ROUNDDOWN() macros to mask internally with a bitmask
that is of the same size as the value that is to be rounded. Without
this patch the mask uses the size of the type of the @size parameter,
which can differ and give wrong result.

Reported-by: Zhizhou Zhang <zhizhouzhang@asrmicro.com>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

455856d419-Apr-2017 Jens Wiklander <jens.wiklander@linaro.org>

Remove SQL-FS

With recent developments in REE-FS SQL-FS has become redundant. This
patch removes SQL-FS.

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Acked-by: Jerome Forissier <jerome.forissi

Remove SQL-FS

With recent developments in REE-FS SQL-FS has become redundant. This
patch removes SQL-FS.

Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/.travis.yml
/optee_os/MAINTAINERS.md
/optee_os/README.md
/optee_os/core/arch/arm/include/arm32.h
/optee_os/core/arch/arm/include/arm64.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/otp_stubs.c
/optee_os/core/arch/arm/kernel/sub.mk
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/user_ta.c
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/core_mmu_v7.c
/optee_os/core/arch/arm/mm/tee_mm.c
/optee_os/core/arch/arm/plat-imx/a9_plat_init.S
/optee_os/core/arch/arm/plat-mediatek/main.c
/optee_os/core/arch/arm/plat-mediatek/platform_config.h
/optee_os/core/arch/arm/plat-rpi3/main.c
/optee_os/core/arch/arm/plat-rpi3/platform_config.h
/optee_os/core/arch/arm/plat-sprd/main.c
/optee_os/core/arch/arm/plat-sprd/platform_config.h
/optee_os/core/arch/arm/plat-stm/main.c
/optee_os/core/arch/arm/plat-stm/platform_config.h
/optee_os/core/arch/arm/plat-sunxi/platform.c
/optee_os/core/arch/arm/plat-sunxi/platform_config.h
/optee_os/core/arch/arm/plat-ti/api_monitor_index_a15.h
/optee_os/core/arch/arm/plat-ti/api_monitor_index_a9.h
/optee_os/core/arch/arm/plat-ti/conf.mk
/optee_os/core/arch/arm/plat-ti/main.c
/optee_os/core/arch/arm/plat-ti/platform_config.h
/optee_os/core/arch/arm/plat-ti/sm_platform_handler_a15.c
/optee_os/core/arch/arm/plat-ti/sm_platform_handler_a9.c
/optee_os/core/arch/arm/plat-ti/sub.mk
/optee_os/core/arch/arm/plat-ti/ti_pl310.c
/optee_os/core/arch/arm/plat-zynqmp/main.c
/optee_os/core/arch/arm/plat-zynqmp/platform_config.h
/optee_os/core/arch/arm/pta/core_fs_htree_tests.c
/optee_os/core/drivers/gic.c
/optee_os/core/include/kernel/tee_common_otp.h
/optee_os/core/include/mm/tee_mm.h
/optee_os/core/include/optee_msg_supplicant.h
/optee_os/core/include/tee/fs_dirfile.h
/optee_os/core/include/tee/fs_htree.h
/optee_os/core/include/tee/tee_fs.h
/optee_os/core/include/tee/tee_fs_key_manager.h
/optee_os/core/include/tee/tee_fs_rpc.h
/optee_os/core/include/tee/tee_svc_storage.h
/optee_os/core/lib/libtomcrypt/sub.mk
/optee_os/core/tee/fs_dirfile.c
/optee_os/core/tee/fs_htree.c
/optee_os/core/tee/sub.mk
/optee_os/core/tee/tee_fs_key_manager.c
/optee_os/core/tee/tee_fs_rpc.c
/optee_os/core/tee/tee_obj.c
/optee_os/core/tee/tee_ree_fs.c
/optee_os/core/tee/tee_rpmb_fs.c
/optee_os/core/tee/tee_svc_cryp.c
/optee_os/core/tee/tee_svc_storage.c
/optee_os/documentation/interrupt_handling.md
/optee_os/documentation/secure_storage.md
libutee/include/tee_api_defines_extensions.h
/optee_os/mk/config.mk
/optee_os/mk/subdir.mk
/optee_os/scripts/checkpatch_inc.sh
40ea51de15-Feb-2017 Volodymyr Babchuk <vlad.babchuk@gmail.com>

spinlock: add cpu_spin_lock_xsave()/xrestore() functions

These are functions like spin_lock_irqsave() functions in linux kernel.
They should replace xxx_lock() functions in different modules.

Signe

spinlock: add cpu_spin_lock_xsave()/xrestore() functions

These are functions like spin_lock_irqsave() functions in linux kernel.
They should replace xxx_lock() functions in different modules.

Signed-off-by: Volodymyr Babchuk <vlad.babchuk@gmail.com>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>

show more ...

040bc0f003-Apr-2017 Jens Wiklander <jens.wiklander@linaro.org>

core: add test case for hash-tree

Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Signed-off-by: Jens Wiklander <jens.wiklander@

core: add test case for hash-tree

Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Tested-by: Jens Wiklander <jens.wiklander@linaro.org> (QEMU)
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

34e59a2330-Mar-2017 Jerome Forissier <jerome.forissier@linaro.org>

tee_internal_api.h: do not define non-standard macros

The macros SLogTrace(), SLogError(), SLogWarning() and S_VAR_NOT_USED()
are nowhere mentioned in the GlobalPlatform TEE Internal Core API spec.

tee_internal_api.h: do not define non-standard macros

The macros SLogTrace(), SLogError(), SLogWarning() and S_VAR_NOT_USED()
are nowhere mentioned in the GlobalPlatform TEE Internal Core API spec.
Delete them.

Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...

620e4edf21-Mar-2017 Etienne Carriere <etienne.carriere@linaro.org>

core: export pTA invoke_tests API to ease tests integration

Suggested-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jerome

core: export pTA invoke_tests API to ease tests integration

Suggested-by: Jens Wiklander <jens.wiklander@linaro.org>
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>

show more ...


/optee_os/.travis.yml
/optee_os/core/arch/arm/include/kernel/pseudo_ta.h
/optee_os/core/arch/arm/include/mm/core_memprot.h
/optee_os/core/arch/arm/include/mm/core_mmu.h
/optee_os/core/arch/arm/include/mm/mobj.h
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/kern.ld.S
/optee_os/core/arch/arm/kernel/pseudo_ta.c
/optee_os/core/arch/arm/kernel/user_ta.c
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/mm/core_mmu_lpae.c
/optee_os/core/arch/arm/mm/mobj.c
/optee_os/core/arch/arm/mm/tee_pager.c
/optee_os/core/arch/arm/plat-d02/main.c
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-imx/main.c
/optee_os/core/arch/arm/plat-ls/main.c
/optee_os/core/arch/arm/plat-ls/plat_init.S
/optee_os/core/arch/arm/plat-mediatek/main.c
/optee_os/core/arch/arm/plat-rcar/main.c
/optee_os/core/arch/arm/plat-rpi3/main.c
/optee_os/core/arch/arm/plat-sprd/console.c
/optee_os/core/arch/arm/plat-stm/platform_config.h
/optee_os/core/arch/arm/plat-stm/tz_a9init.S
/optee_os/core/arch/arm/plat-sunxi/main.c
/optee_os/core/arch/arm/plat-sunxi/platform.c
/optee_os/core/arch/arm/plat-sunxi/sub.mk
/optee_os/core/arch/arm/plat-ti/main.c
/optee_os/core/arch/arm/plat-ti/sub.mk
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/plat-vexpress/platform_config.h
/optee_os/core/arch/arm/plat-zynq7k/main.c
/optee_os/core/arch/arm/plat-zynq7k/plat_init.S
/optee_os/core/arch/arm/plat-zynqmp/main.c
/optee_os/core/arch/arm/pta/pta_invoke_tests.c
/optee_os/core/arch/arm/pta/sub.mk
/optee_os/core/arch/arm/tee/arch_svc.c
/optee_os/core/arch/arm/tee/cache.c
/optee_os/core/arch/arm/tee/entry_std.c
/optee_os/core/arch/arm/tee/sub.mk
/optee_os/core/arch/arm/tee/svc_cache.c
/optee_os/core/drivers/cdns_uart.c
/optee_os/core/drivers/hi16xx_uart.c
/optee_os/core/drivers/imx_uart.c
/optee_os/core/drivers/ns16550.c
/optee_os/core/drivers/pl011.c
/optee_os/core/drivers/scif.c
/optee_os/core/drivers/serial8250_uart.c
/optee_os/core/drivers/sprd_uart.c
/optee_os/core/drivers/sunxi_uart.c
/optee_os/core/include/console.h
/optee_os/core/include/drivers/cdns_uart.h
/optee_os/core/include/drivers/hi16xx_uart.h
/optee_os/core/include/drivers/imx_uart.h
/optee_os/core/include/drivers/ns16550.h
/optee_os/core/include/drivers/pl011.h
/optee_os/core/include/drivers/scif.h
/optee_os/core/include/drivers/serial.h
/optee_os/core/include/drivers/serial8250_uart.h
/optee_os/core/include/drivers/sprd_uart.h
/optee_os/core/include/drivers/sunxi_uart.h
/optee_os/core/include/io.h
/optee_os/core/include/tee/cache.h
/optee_os/core/include/tee/svc_cache.h
/optee_os/core/include/tee/tee_fs.h
/optee_os/core/include/tee/tee_fs_rpc.h
/optee_os/core/include/tee/tee_obj.h
/optee_os/core/include/tee/tee_pobj.h
/optee_os/core/include/tee/tee_svc_storage.h
/optee_os/core/kernel/console.c
/optee_os/core/kernel/sub.mk
/optee_os/core/kernel/tee_ta_manager.c
/optee_os/core/tee/tee_fs_rpc.c
/optee_os/core/tee/tee_obj.c
/optee_os/core/tee/tee_pobj.c
/optee_os/core/tee/tee_ree_fs.c
/optee_os/core/tee/tee_rpmb_fs.c
/optee_os/core/tee/tee_sql_fs.c
/optee_os/core/tee/tee_svc_storage.c
/optee_os/documentation/secure_storage_sql.md
libutee/include/pta_invoke_tests.h
/optee_os/mk/config.mk
c04e5c1d13-Mar-2017 Etienne Carriere <etienne.carriere@linaro.org>

core: introduce TA_FLAG_SECURE_DATA_PATH

Rename TA_FLAG_UNSAFE_NW_PARAMS into TA_FLAG_SECURE_DATA_PATH.

This change does NOT able secure data path support in OP-TEE. It is
rather a pre-requisite fo

core: introduce TA_FLAG_SECURE_DATA_PATH

Rename TA_FLAG_UNSAFE_NW_PARAMS into TA_FLAG_SECURE_DATA_PATH.

This change does NOT able secure data path support in OP-TEE. It is
rather a pre-requisite for later changes in OP-TEE regarding SDP
support.

Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>

show more ...

f967662d02-Mar-2017 Jerome Forissier <jerome.forissier@linaro.org>

libutee: demote allocation traces from DEBUG to FLOW

When CFG_TEE_CORE_USER_MEM_DEBUG=1 (which is the default, enables
additional checks in tee_user_mem.c and also enables traces) and
CFG_TEE_TA_LOG

libutee: demote allocation traces from DEBUG to FLOW

When CFG_TEE_CORE_USER_MEM_DEBUG=1 (which is the default, enables
additional checks in tee_user_mem.c and also enables traces) and
CFG_TEE_TA_LOG_LEVEL=3 (DEBUG), libutee logs messages for each and
every allocation and deallocation, as follows:

DEBUG: USER-TA: tee_user_mem_alloc:343: Allocate: link:[0x1211a0], buf:[0x1211b0:12]
DEBUG: USER-TA: tee_user_mem_free:442: Free: link:[0x1211a0], buf:[0x1211b0:12]
...

That's annoying and pretty much useless so let's change them to use
the lower TRACE_FLOW level (CFG_TEE_TA_LOG_LEVEL=4) instead.

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 ...

5acb1bc612-Dec-2016 David Wang <david.wang@arm.com>

Rename the secure and non-secure interrupts

Currently, the secure interrupts are named as FIQ and the non-secure
interrupts are named as IRQ.

In GICv3 mode, the FIQ and IRQ have different definitio

Rename the secure and non-secure interrupts

Currently, the secure interrupts are named as FIQ and the non-secure
interrupts are named as IRQ.

In GICv3 mode, the FIQ and IRQ have different definitions.
* Secure Group 0 interrupts:
Handled by EL3 and triggered by FIQ when running at Secure EL0/1.
* Secure Group 1 interrupts:
Handled by optee_os and triggered by IRQ when running at Secure EL0/1.
* Non-secure Group1 interrupts:
Handled by the rich os and triggered by FIQ when running at Secure
EL0/1.

The "Secure Group 1" interrupts are the "native" interrupts handled by
optee_os. They are same as the "secure" interrupts used in optee_os
for now. But they are triggered by FIQ in GICv2 mode while by IRQ in
GICv3 mode.

The "Secure Group 0" and "Non-secure Group1" interrupts are the
"foreign" interrupts that will cause the exiting of optee_os. (e.g.
switch back to normal world) The "Non-secure Group1" interrupts are
same as the "non-secure"interrupts used in optee_os for now. But they
are triggered by IRQ in GICv2 mode while by FIQ in GICv3 mode.

This patch renames these interrupts to the generic names - "Foreign
interrupts" and "Native interrupts".
For the support of GICv3 mode in the future, we can redefine the macros
of "native interrupt" and "foreign interrupt" to IRQ and FIQ.

Signed-off-by: David Wang <david.wang@arm.com>
Reviewed-by: Joakim Bech <joakim.bech@linaro.org>
Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org>
Tested-by: Etienne Carriere <etienne.carriere@linaro.org> (b2260)

show more ...


/optee_os/core/arch/arm/arm.mk
/optee_os/core/arch/arm/include/kernel/spinlock.h
/optee_os/core/arch/arm/include/kernel/thread.h
/optee_os/core/arch/arm/include/kernel/thread_defs.h
/optee_os/core/arch/arm/include/kernel/time_source.h
/optee_os/core/arch/arm/include/sm/optee_smc.h
/optee_os/core/arch/arm/include/sm/sm.h
/optee_os/core/arch/arm/kernel/generic_boot.c
/optee_os/core/arch/arm/kernel/spin_lock_debug.c
/optee_os/core/arch/arm/kernel/tee_time_arm_cntpct.c
/optee_os/core/arch/arm/kernel/thread.c
/optee_os/core/arch/arm/kernel/thread_a32.S
/optee_os/core/arch/arm/kernel/thread_a64.S
/optee_os/core/arch/arm/kernel/user_ta.c
/optee_os/core/arch/arm/mm/core_mmu.c
/optee_os/core/arch/arm/plat-d02/main.c
/optee_os/core/arch/arm/plat-hikey/hikey_peripherals.h
/optee_os/core/arch/arm/plat-hikey/main.c
/optee_os/core/arch/arm/plat-hikey/spi_test.c
/optee_os/core/arch/arm/plat-imx/main.c
/optee_os/core/arch/arm/plat-ls/main.c
/optee_os/core/arch/arm/plat-mediatek/main.c
/optee_os/core/arch/arm/plat-rcar/main.c
/optee_os/core/arch/arm/plat-rpi3/main.c
/optee_os/core/arch/arm/plat-sprd/main.c
/optee_os/core/arch/arm/plat-stm/main.c
/optee_os/core/arch/arm/plat-sunxi/main.c
/optee_os/core/arch/arm/plat-ti/api_monitor_index.h
/optee_os/core/arch/arm/plat-ti/conf.mk
/optee_os/core/arch/arm/plat-ti/main.c
/optee_os/core/arch/arm/plat-ti/platform_config.h
/optee_os/core/arch/arm/plat-ti/sm_platform_handler.c
/optee_os/core/arch/arm/plat-ti/sub.mk
/optee_os/core/arch/arm/plat-vexpress/main.c
/optee_os/core/arch/arm/plat-zynq7k/main.c
/optee_os/core/arch/arm/plat-zynqmp/main.c
/optee_os/core/arch/arm/pta/interrupt_tests.c
/optee_os/core/arch/arm/sm/sm.c
/optee_os/core/arch/arm/tee/arch_svc.c
/optee_os/core/arch/arm/tee/entry_std.c
/optee_os/core/arch/arm/tee/pta_socket.c
/optee_os/core/arch/arm/tee/sub.mk
/optee_os/core/drivers/pl022_spi.c
/optee_os/core/include/drivers/pl022_spi.h
/optee_os/core/include/kernel/tee_ta_manager.h
/optee_os/core/include/kernel/tee_time.h
/optee_os/core/include/optee_msg_supplicant.h
/optee_os/core/include/spi.h
/optee_os/core/include/tee/tee_cryp_utl.h
/optee_os/core/lib/libtomcrypt/src/tee_ltc_provider.c
/optee_os/core/tee/tee_cryp_utl.c
/optee_os/core/tee/tee_time_generic.c
/optee_os/documentation/interrupt_handling.md
/optee_os/documentation/optee_design.md
libutils/isoc/bget_malloc.c
/optee_os/mk/config.mk
/optee_os/scripts/checkpatch.sh
/optee_os/scripts/checkpatch_inc.sh

1...<<21222324252627282930>>...36