| 2188fe07 | 19-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: remove tee_mmu_get_ctx()
tee_mmu_get_ctx() is trivial and also only used inside core_mmu.c. So open code it in core_mmu.c and remove the implementation from tee_mmu.c.
Acked-by: Joakim Bech <
core: remove tee_mmu_get_ctx()
tee_mmu_get_ctx() is trivial and also only used inside core_mmu.c. So open code it in core_mmu.c and remove the implementation from tee_mmu.c.
Acked-by: Joakim Bech <joakim.bech@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 18c166d6 | 19-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: move teecore_init_pub_ram()
Moves teecore_init_pub_ram() from tee_mmu.c to core_mmu.c.
Acked-by: Joakim Bech <joakim.bech@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org> Reviewe
core: move teecore_init_pub_ram()
Moves teecore_init_pub_ram() from tee_mmu.c to core_mmu.c.
Acked-by: Joakim Bech <joakim.bech@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 4ad6b1ad | 19-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: remove unused tee_mmu_user_get_cache_attr()
Removes the unused function tee_mmu_user_get_cache_attr().
Acked-by: Joakim Bech <joakim.bech@linaro.org> Acked-by: Jerome Forissier <jerome@foriss
core: remove unused tee_mmu_user_get_cache_attr()
Removes the unused function tee_mmu_user_get_cache_attr().
Acked-by: Joakim Bech <joakim.bech@linaro.org> Acked-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 1f648d54 | 09-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: remove struct tee_ta_ctx from struct user_mode_ctx
Removes struct tee_ta_ctx from struct user_mode_ctx allowing a user mode entity to be independent of the TA concept, that is, making room for
core: remove struct tee_ta_ctx from struct user_mode_ctx
Removes struct tee_ta_ctx from struct user_mode_ctx allowing a user mode entity to be independent of the TA concept, that is, making room for SPs in user mode.
A pointer to a struct user_mode_ctx is passed to many memory management functions where a pointer to a struct ts_ctx is needed too. Prior to this patch it was possible to calculate that address of corresponding struct ts_ctx with help of the container_of() macro, that is no longer possible. Instead is a struct ts_ctx *ts_ctx field added to struct user_mode_ctx in order to allow such lookups.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| f802ab52 | 01-Sep-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add gprof_set_status() to struct ts_ops
Adds gprof_set_status() to struct ts_ops to allow generic gprof handling in thread_svc_handler().
Reviewed-by: Etienne Carriere <etienne.carriere@linar
core: add gprof_set_status() to struct ts_ops
Adds gprof_set_status() to struct ts_ops to allow generic gprof handling in thread_svc_handler().
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 82061b8d | 01-Sep-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: store TA params in session struct
Stores TA params and error origin in struct tee_ta_session instead of passing them as parameters to enter_open_session() and enter_invoke_cmd() in struct ts_o
core: store TA params in session struct
Stores TA params and error origin in struct tee_ta_session instead of passing them as parameters to enter_open_session() and enter_invoke_cmd() in struct ts_ops. This makes struct ts_ops less TA specific.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| ab242291 | 01-Sep-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add struct ts_ops
Adds struct ts_ops replacing the previous struct tee_ta_ops.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro
core: add struct ts_ops
Adds struct ts_ops replacing the previous struct tee_ta_ops.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 3560d990 | 01-Sep-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add generic struct ts_ctx
Adds the generic struct ts_ctx to be used instead of struct tee_ta_ctx where generic context operations are performed.
struct tee_ta_ctx adds a field with struct ts_
core: add generic struct ts_ctx
Adds the generic struct ts_ctx to be used instead of struct tee_ta_ctx where generic context operations are performed.
struct tee_ta_ctx adds a field with struct ts_ctx for conversion to struct ts_ctx where needed.
The struct ts_session is updated to keep a pointer to a struct ts_ctx instead of the previous struct tee_ta_ctx.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 00b3b9a2 | 31-Aug-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: add generic struct ts_session
As a step in making room for Secure Partitions (SPs) running at S-EL0 add a Trusted Service (TS) abstraction. Both TAs and SPs is a TS.
Adds the generic struct t
core: add generic struct ts_session
As a step in making room for Secure Partitions (SPs) running at S-EL0 add a Trusted Service (TS) abstraction. Both TAs and SPs is a TS.
Adds the generic struct ts_session. All future sessions structs (currently only struct tee_ta_session exists) should add this struct to allow generic session operations.
With this struct comes new functions replacing previous struct tee_ta_session oriented functions. The following functions are replaced as: tee_ta_get_current_session() -> ts_get_current_session() tee_ta_push_current_session() -> ts_push_current_session() tee_ta_pop_current_session() -> ts_pop_current_session() tee_ta_get_calling_session() -> ts_get_calling_session()
ts_get_current_session() is changed compared to its predecessor to panic() in case of failure to return a valid pointer.
A new function ts_get_current_session_may_fail() is added to handle an eventual case where a return NULL session may be handled.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| d0e3efa6 | 31-Aug-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: replace TA with user mode in abort handling
Renames enums, defines and functions related to abort handling to use the name user mode instead of TA in order to be more generic.
Reviewed-by: Et
core: replace TA with user mode in abort handling
Renames enums, defines and functions related to abort handling to use the name user mode instead of TA in order to be more generic.
Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 47cbb5b2 | 26-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: fix CFG_CORE_UNMAP_CORE_AT_EL0=y for non-default CFG_LPAE_ADDR_SPACE_BITS
Prior to this patch CORE_MMU_L1_TBL_OFFSET was calculated without taking CFG_LPAE_ADDR_SPACE_BITS into account. This l
core: fix CFG_CORE_UNMAP_CORE_AT_EL0=y for non-default CFG_LPAE_ADDR_SPACE_BITS
Prior to this patch CORE_MMU_L1_TBL_OFFSET was calculated without taking CFG_LPAE_ADDR_SPACE_BITS into account. This leads to a COMPILE_TIME_ASSERT() in case CFG_LPAE_ADDR_SPACE_BITS is assigned anything but 32. Fix this by adding CFG_LPAE_ADDR_SPACE_BITS in the CORE_MMU_L1_TBL_OFFSET expression.
Reviewed-by: Ruchika Gupta <ruchika.gupta@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| cc8fda93 | 26-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: replace CFG_LPAE_ADDR_SPACE_SIZE with CFG_LPAE_ADDR_SPACE_BITS
The CFG_LPAE_ADDR_SPACE_SIZE configuration variable is somewhat inconvenient to use since it's a value larger than what fits in a
core: replace CFG_LPAE_ADDR_SPACE_SIZE with CFG_LPAE_ADDR_SPACE_BITS
The CFG_LPAE_ADDR_SPACE_SIZE configuration variable is somewhat inconvenient to use since it's a value larger than what fits in a 32-bit register. Instead replace it with CFG_LPAE_ADDR_SPACE_BITS which instead tells the size in number of bits.
Reviewed-by: Ruchika Gupta <ruchika.gupta@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 3ad655c3 | 22-Oct-2020 |
Jerome Forissier <jerome@forissier.org> |
core: do not print canary debug messages on boot
init_canaries() currently prints the following messages on boot:
... D/TC:0 0 init_canaries:191 #Stack canaries for stack_abt[3] with top at 0xe19
core: do not print canary debug messages on boot
init_canaries() currently prints the following messages on boot:
... D/TC:0 0 init_canaries:191 #Stack canaries for stack_abt[3] with top at 0xe19f6f8 D/TC:0 0 init_canaries:191 watch *0xe19f6fc ...
The above text is repeated for each CPU core for both stack_tmp and stack_abt, as well as for each thread for stack_thread. This is quite verbose, especially with modern SoCs supporting many cores (16 or 24 is not uncommon). The main purpose is to help with debugging stack overflows when a debugger is available: when a dead canary is found, the corrupt stack is shown which allows the developer to set a watchpoint at the suitable address:
E/TC:0 0 Dead canary at end of 'stack_abt[3]'
In this example, one would set a watchpoint at *0xe19f6fc and re-run the test to identify at which point the stack is corrupted.
This commit removes the initialization messages and prints the address of the dead canary instead. The same debugging technique remains possible.
Signed-off-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| ade61fec | 24-Feb-2019 |
Fabien Parent <fparent@baylibre.com> |
mediatek: add support for MT8516 SoC
Add OP-TEE support for MT8516 SoC.
Acked-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Fabien Parent <fparent@baylibre.com> |
| bdb6a6af | 19-Oct-2020 |
Fabien Parent <fparent@baylibre.com> |
mediatek: enable CFG_ARM64_core by default
MediaTek platforms are most likely going to be built using ARM64, so set the default value for CFG_ARM64_core to be 'y'.
Suggested-by: Jerome Forissier <j
mediatek: enable CFG_ARM64_core by default
MediaTek platforms are most likely going to be built using ARM64, so set the default value for CFG_ARM64_core to be 'y'.
Suggested-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Fabien Parent <fparent@baylibre.com> Reviewed-by: Jerome Forissier <jerome@forissier.org>
show more ...
|
| 0d57f57c | 21-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: replace assembly directive .align with .balign
The assembly directive .align is replaced by .balign to harmonize with the recently added align parameter of FUNC() and LOCAL_FUNC().
On the arm
core: replace assembly directive .align with .balign
The assembly directive .align is replaced by .balign to harmonize with the recently added align parameter of FUNC() and LOCAL_FUNC().
On the arm architecture .align is number of low-order bits location counter must have after advancement. While .balign always is advancement to the next multiple of this number.
Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 39cb90b0 | 21-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: sm_a32.S: add missing .cantunwind
Adds missing .cantunwind directives to the two alternative exception vectors sm_vect_table_a15 and sm_vect_table_bpiall.
Reviewed-by: Jerome Forissier <jerom
core: sm_a32.S: add missing .cantunwind
Adds missing .cantunwind directives to the two alternative exception vectors sm_vect_table_a15 and sm_vect_table_bpiall.
Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| fae8192b | 19-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: correct alignment for exception vectors
The FUNC and LOCAL_FUNC macros changes section so specifying alignment before the function will be lost. This may break for instance usage of sm_vect_ta
core: correct alignment for exception vectors
The FUNC and LOCAL_FUNC macros changes section so specifying alignment before the function will be lost. This may break for instance usage of sm_vect_table, depending on configuration. Fix this by passing required alignment as a parameter to the macro.
Fixes: a31e8303cf2e ("Remove '.section .text.<name>' and use function macros instead") Acked-by: Etienne Carriere <etienne.carriere@linaro.org> Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| 54fbfa98 | 14-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
core: deprecate register_dynamic_shm()
register_dynamic_shm() and register_ddr() does almost the same thing but they cannot be used both in the same platform build. To straighten out this confusion
core: deprecate register_dynamic_shm()
register_dynamic_shm() and register_ddr() does almost the same thing but they cannot be used both in the same platform build. To straighten out this confusion we're switching to use only register_ddr() which is a bit more flexible than register_dynamic_shm() since the former automatically creates holes in the memory map where there otherwise would be a fatal conflict.
register_dynamic_shm() is deprecated and for backwards compatibility reimplemented as a special variant of register_ddr().
MEM_AREA_RAM_NSEC is kept only as a way of establish a static map of non-secure memory. For example CFG_BCM_ELOG_BASE for plat-bcm.
Acked-by: Jerome Forissier <jerome@forissier.org> Reviewed-by: Etienne Carriere <etienne.carriere@linaro.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| ed30b6c7 | 15-Oct-2020 |
Jens Wiklander <jens.wiklander@linaro.org> |
early_ta: use scattered array helpers
Simplifies the core linker script by replacing the hard coded .rodata.early_ta section with use of SCATTERED_ARRAY_DEFINE_PG_ITEM() instead.
Reviewed-by: Jerom
early_ta: use scattered array helpers
Simplifies the core linker script by replacing the hard coded .rodata.early_ta section with use of SCATTERED_ARRAY_DEFINE_PG_ITEM() instead.
Reviewed-by: Jerome Forissier <jerome@forissier.org> Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c43d7569 | 13-Oct-2020 |
Ricardo Salveti <ricardo@foundries.io> |
plat: zynqmp: use generic_ram_layout for defining dram layout
Switch to the generic generic_ram_layout header file for defining the default dram layout. This allow allows the user to easily customiz
plat: zynqmp: use generic_ram_layout for defining dram layout
Switch to the generic generic_ram_layout header file for defining the default dram layout. This allow allows the user to easily customize the default dram base and size via CFG_TZDRAM_START/CFG_TZDRAM_SIZE.
Default values are still the same as previously set by platform_config.
Signed-off-by: Ricardo Salveti <ricardo@foundries.io> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| ae2b65fc | 08-Oct-2020 |
Ricardo Salveti <ricardo@foundries.io> |
plat: zynqmp: force disable core ALSR
Disable core ASLR for two reasons: 1. There is no source for ALSR seed, as ATF does not provide a DTB to OP-TEE. Hardware RNG is also not currently supported
plat: zynqmp: force disable core ALSR
Disable core ASLR for two reasons: 1. There is no source for ALSR seed, as ATF does not provide a DTB to OP-TEE. Hardware RNG is also not currently supported. 2. OP-TEE does not boot with enabled CFG_CORE_ASLR.
Further investigation is needed to see why enabled ASLR causes OP-TEE to not boot properly.
Signed-off-by: Ricardo Salveti <ricardo@foundries.io> Acked-by: Jerome Forissier <jerome@forissier.org>
show more ...
|
| 334810f9 | 08-Oct-2020 |
Etienne Carriere <etienne.carriere@linaro.org> |
plat-stm32mp1: scmi: expose PWR regulators
Expose SoC PWR regulators as SCMI voltage domains to the non-secure world. They are exposed to SCMI agent scmi0 that exposes SoC resources used by non-secu
plat-stm32mp1: scmi: expose PWR regulators
Expose SoC PWR regulators as SCMI voltage domains to the non-secure world. They are exposed to SCMI agent scmi0 that exposes SoC resources used by non-secure world but controlled by secure world since RCC TZ hardening configuration.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| c22983c9 | 08-Oct-2020 |
Etienne Carriere <etienne.carriere@linaro.org> |
plat-stm32mp1: scmi: prepare platform SCMI voltage regulators
Define generic resources for stm32mp1 platform to support voltage regulators exposed to SCMI agents through the voltage domain protocol.
plat-stm32mp1: scmi: prepare platform SCMI voltage regulators
Define generic resources for stm32mp1 platform to support voltage regulators exposed to SCMI agents through the voltage domain protocol.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|
| b787ecb7 | 08-Oct-2020 |
Etienne Carriere <etienne.carriere@linaro.org> |
plat-stm32mp1: introduce PWR regulators
Introduce a voltage regulator driver for the voltage controllers driven through PWR interface of stm32mp1 SoCs.
Signed-off-by: Etienne Carriere <etienne.carr
plat-stm32mp1: introduce PWR regulators
Introduce a voltage regulator driver for the voltage controllers driven through PWR interface of stm32mp1 SoCs.
Signed-off-by: Etienne Carriere <etienne.carriere@linaro.org> Acked-by: Jens Wiklander <jens.wiklander@linaro.org>
show more ...
|