Commit 5e810a85 authored by danh-arm's avatar danh-arm Committed by GitHub
Browse files

Merge pull request #847 from douglas-raillard-arm/dr/fix_abort_smc

Fix TSPD implementation of STD SMC ABORT
parents 7befa5a9 57a5a56c
...@@ -612,15 +612,26 @@ uint64_t tspd_smc_handler(uint32_t smc_fid, ...@@ -612,15 +612,26 @@ uint64_t tspd_smc_handler(uint32_t smc_fid,
break; break;
} }
assert(handle == cm_get_context(NON_SECURE));
cm_el1_sysregs_context_save(NON_SECURE);
/* Abort the preempted SMC request */ /* Abort the preempted SMC request */
if (!tspd_abort_preempted_smc(tsp_ctx)) if (!tspd_abort_preempted_smc(tsp_ctx)) {
/* /*
* If there was no preempted SMC to abort, return * If there was no preempted SMC to abort, return
* SMC_UNK. * SMC_UNK.
*
* Restoring the NON_SECURE context is not necessary as
* the synchronous entry did not take place if the
* return code of tspd_abort_preempted_smc is zero.
*/ */
SMC_RET1(handle, SMC_UNK); cm_set_next_eret_context(NON_SECURE);
break; break;
}
cm_el1_sysregs_context_restore(NON_SECURE);
cm_set_next_eret_context(NON_SECURE);
SMC_RET0(handle);
/* /*
* Request from non secure world to resume the preempted * Request from non secure world to resume the preempted
......
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