Commit 1a2c0ff9 authored by Olivier Deprez's avatar Olivier Deprez Committed by TrustedFirmware Code Review
Browse files

Merge changes from topic "od/cleanup-changes" into integration

* changes:
  perf(spmd): omit sel1 context save if sel2 present
  fix(fvp): spmc optee manifest remove SMC allowlist
  fix: random typos in tf-a code base
parents 0ef419b1 678ce223
/* /*
* Copyright (c) 2014-2020, Arm Limited and Contributors. All rights reserved. * Copyright (c) 2014-2021, Arm Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -144,7 +144,7 @@ endfunc do_cpu_reg_dump ...@@ -144,7 +144,7 @@ endfunc do_cpu_reg_dump
* If cpu_ops for the MIDR_EL1 cannot be found and * If cpu_ops for the MIDR_EL1 cannot be found and
* SUPPORT_UNKNOWN_MPID is enabled, it will try to look for a * SUPPORT_UNKNOWN_MPID is enabled, it will try to look for a
* default cpu_ops with an MIDR value of 0. * default cpu_ops with an MIDR value of 0.
* (Implementation number 0x0 should be reseverd for software use * (Implementation number 0x0 should be reserved for software use
* and therefore no clashes should happen with that default value). * and therefore no clashes should happen with that default value).
* *
* Return : * Return :
......
/* /*
* Copyright (c) 2016-2020, ARM Limited and Contributors. All rights reserved. * Copyright (c) 2016-2021, ARM Limited and Contributors. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -49,7 +49,7 @@ void cm_init(void) ...@@ -49,7 +49,7 @@ void cm_init(void)
* *
* To prepare the register state for entry call cm_prepare_el3_exit() and * To prepare the register state for entry call cm_prepare_el3_exit() and
* el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to * el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to
* cm_e1_sysreg_context_restore(). * cm_el1_sysregs_context_restore().
******************************************************************************/ ******************************************************************************/
void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep) void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
{ {
......
...@@ -60,7 +60,7 @@ void __init cm_init(void) ...@@ -60,7 +60,7 @@ void __init cm_init(void)
* *
* To prepare the register state for entry call cm_prepare_el3_exit() and * To prepare the register state for entry call cm_prepare_el3_exit() and
* el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to * el3_exit(). For Secure-EL1 cm_prepare_el3_exit() is equivalent to
* cm_e1_sysreg_context_restore(). * cm_el1_sysregs_context_restore().
******************************************************************************/ ******************************************************************************/
void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep) void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
{ {
...@@ -286,7 +286,7 @@ void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep) ...@@ -286,7 +286,7 @@ void cm_setup_context(cpu_context_t *ctx, const entry_point_info_t *ep)
/* /*
* Store the initialised SCTLR_EL1 value in the cpu_context - SCTLR_EL2 * Store the initialised SCTLR_EL1 value in the cpu_context - SCTLR_EL2
* and other EL2 registers are set up by cm_prepare_ns_entry() as they * and other EL2 registers are set up by cm_prepare_el3_exit() as they
* are not part of the stored cpu_context. * are not part of the stored cpu_context.
*/ */
write_ctx_reg(get_el1_sysregs_ctx(ctx), CTX_SCTLR_EL1, sctlr_elx); write_ctx_reg(get_el1_sysregs_ctx(ctx), CTX_SCTLR_EL1, sctlr_elx);
......
/* /*
* Copyright (c) 2020, Arm Limited. All rights reserved. * Copyright (c) 2020-2021, Arm Limited. All rights reserved.
* *
* SPDX-License-Identifier: BSD-3-Clause * SPDX-License-Identifier: BSD-3-Clause
*/ */
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
is_ffa_partition; is_ffa_partition;
debug_name = "op-tee"; debug_name = "op-tee";
load_address = <0x6280000>; load_address = <0x6280000>;
smc_whitelist = <0xbe000000>;
vcpu_count = <8>; vcpu_count = <8>;
mem_size = <1048576>; mem_size = <1048576>;
}; };
......
...@@ -108,9 +108,10 @@ uint64_t spmd_spm_core_sync_entry(spmd_spm_core_context_t *spmc_ctx) ...@@ -108,9 +108,10 @@ uint64_t spmd_spm_core_sync_entry(spmd_spm_core_context_t *spmc_ctx)
cm_set_context(&(spmc_ctx->cpu_ctx), SECURE); cm_set_context(&(spmc_ctx->cpu_ctx), SECURE);
/* Restore the context assigned above */ /* Restore the context assigned above */
cm_el1_sysregs_context_restore(SECURE);
#if SPMD_SPM_AT_SEL2 #if SPMD_SPM_AT_SEL2
cm_el2_sysregs_context_restore(SECURE); cm_el2_sysregs_context_restore(SECURE);
#else
cm_el1_sysregs_context_restore(SECURE);
#endif #endif
cm_set_next_eret_context(SECURE); cm_set_next_eret_context(SECURE);
...@@ -118,9 +119,10 @@ uint64_t spmd_spm_core_sync_entry(spmd_spm_core_context_t *spmc_ctx) ...@@ -118,9 +119,10 @@ uint64_t spmd_spm_core_sync_entry(spmd_spm_core_context_t *spmc_ctx)
rc = spmd_spm_core_enter(&spmc_ctx->c_rt_ctx); rc = spmd_spm_core_enter(&spmc_ctx->c_rt_ctx);
/* Save secure state */ /* Save secure state */
cm_el1_sysregs_context_save(SECURE);
#if SPMD_SPM_AT_SEL2 #if SPMD_SPM_AT_SEL2
cm_el2_sysregs_context_save(SECURE); cm_el2_sysregs_context_save(SECURE);
#else
cm_el1_sysregs_context_save(SECURE);
#endif #endif
return rc; return rc;
...@@ -346,15 +348,23 @@ static uint64_t spmd_smc_forward(uint32_t smc_fid, ...@@ -346,15 +348,23 @@ static uint64_t spmd_smc_forward(uint32_t smc_fid,
unsigned int secure_state_out = (!secure_origin) ? SECURE : NON_SECURE; unsigned int secure_state_out = (!secure_origin) ? SECURE : NON_SECURE;
/* Save incoming security state */ /* Save incoming security state */
cm_el1_sysregs_context_save(secure_state_in);
#if SPMD_SPM_AT_SEL2 #if SPMD_SPM_AT_SEL2
if (secure_state_in == NON_SECURE) {
cm_el1_sysregs_context_save(secure_state_in);
}
cm_el2_sysregs_context_save(secure_state_in); cm_el2_sysregs_context_save(secure_state_in);
#else
cm_el1_sysregs_context_save(secure_state_in);
#endif #endif
/* Restore outgoing security state */ /* Restore outgoing security state */
cm_el1_sysregs_context_restore(secure_state_out);
#if SPMD_SPM_AT_SEL2 #if SPMD_SPM_AT_SEL2
if (secure_state_out == NON_SECURE) {
cm_el1_sysregs_context_restore(secure_state_out);
}
cm_el2_sysregs_context_restore(secure_state_out); cm_el2_sysregs_context_restore(secure_state_out);
#else
cm_el1_sysregs_context_restore(secure_state_out);
#endif #endif
cm_set_next_eret_context(secure_state_out); cm_set_next_eret_context(secure_state_out);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment