summaryrefslogtreecommitdiff
path: root/security/tlk_driver/ote_comms.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/tlk_driver/ote_comms.c')
-rw-r--r--security/tlk_driver/ote_comms.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/security/tlk_driver/ote_comms.c b/security/tlk_driver/ote_comms.c
index 2facb386c7a7..cf5f87e31807 100644
--- a/security/tlk_driver/ote_comms.c
+++ b/security/tlk_driver/ote_comms.c
@@ -259,8 +259,15 @@ uint32_t tlk_generic_smc(uint32_t arg0, uintptr_t arg1, uintptr_t arg2)
switch_cpumask_to_cpu0();
retval = _tlk_generic_smc(arg0, arg1, arg2);
- while (retval == 0xFFFFFFFD)
- retval = _tlk_generic_smc((60 << 24), 0, 0);
+ while (retval == TE_ERROR_PREEMPT_BY_IRQ ||
+ retval == TE_ERROR_PREEMPT_BY_FS) {
+ if (retval == TE_ERROR_PREEMPT_BY_IRQ) {
+ retval = _tlk_generic_smc((60 << 24), 0, 0);
+ } else {
+ tlk_ss_op();
+ retval = _tlk_generic_smc(TE_SMC_SS_REQ_COMPLETE, 0, 0);
+ }
+ }
restore_cpumask();