diff --git a/services/std_svc/spm/spm_main.c b/services/std_svc/spm/spm_main.c index ae71c1d..e156106 100644 --- a/services/std_svc/spm/spm_main.c +++ b/services/std_svc/spm/spm_main.c @@ -29,7 +29,6 @@ * Secure Partition context information. ******************************************************************************/ static secure_partition_context_t sp_ctx; -unsigned int sp_init_in_progress; /******************************************************************************* * Replace the S-EL1 re-entry information with S-EL0 re-entry @@ -128,10 +127,10 @@ /* * Arrange for an entry into the secure partition. */ - sp_init_in_progress = 1; + sp_ctx.sp_init_in_progress = 1; rc = spm_synchronous_sp_entry(&sp_ctx); assert(rc == 0); - sp_init_in_progress = 0; + sp_ctx.sp_init_in_progress = 0; VERBOSE("SP_MEMORY_ATTRIBUTES_SET_AARCH64 availability has been revoked\n"); return rc; @@ -358,7 +357,7 @@ cm_el1_sysregs_context_save(SECURE); spm_setup_next_eret_into_sel0(handle); - if (sp_init_in_progress) { + if (sp_ctx.sp_init_in_progress) { /* * SPM reports completion. The SPM must have * initiated the original request through a @@ -391,7 +390,7 @@ case SP_MEMORY_ATTRIBUTES_GET_AARCH64: INFO("Received SP_MEMORY_ATTRIBUTES_GET_AARCH64 SMC\n"); - if (!sp_init_in_progress) { + if (!sp_ctx.sp_init_in_progress) { WARN("SP_MEMORY_ATTRIBUTES_GET_AARCH64 is available at boot time only\n"); SMC_RET1(handle, SPM_NOT_SUPPORTED); } @@ -400,7 +399,7 @@ case SP_MEMORY_ATTRIBUTES_SET_AARCH64: INFO("Received SP_MEMORY_ATTRIBUTES_SET_AARCH64 SMC\n"); - if (!sp_init_in_progress) { + if (!sp_ctx.sp_init_in_progress) { WARN("SP_MEMORY_ATTRIBUTES_SET_AARCH64 is available at boot time only\n"); SMC_RET1(handle, SPM_NOT_SUPPORTED); } diff --git a/services/std_svc/spm/spm_private.h b/services/std_svc/spm/spm_private.h index 16993e8..2fc46c8 100644 --- a/services/std_svc/spm/spm_private.h +++ b/services/std_svc/spm/spm_private.h @@ -43,6 +43,7 @@ typedef struct secure_partition_context { uint64_t c_rt_ctx; cpu_context_t cpu_ctx; + unsigned int sp_init_in_progress; } secure_partition_context_t; uint64_t spm_secure_partition_enter(uint64_t *c_rt_ctx);