mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-22 20:38:03 +00:00
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
This commit is contained in:
commit
1a2c0ff927
5 changed files with 21 additions and 12 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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
|
||||||
* 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 :
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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)
|
||||||
*
|
*
|
||||||
* 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)
|
||||||
*
|
*
|
||||||
* 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)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* 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 @@
|
||||||
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)
|
||||||
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)
|
||||||
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,
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue