diff --git a/arch/arm64/kernel/sleep.S b/arch/arm64/kernel/sleep.S index 1bec41b5fda3..79a604e867d6 100644 --- a/arch/arm64/kernel/sleep.S +++ b/arch/arm64/kernel/sleep.S @@ -138,6 +138,10 @@ ENTRY(_cpu_resume) bl kasan_unpoison_task_stack_below #endif +#ifdef CONFIG_TRUSTY_FIQ + bl trusty_fiq_cpu_resume +#endif + ldp x19, x20, [x29, #16] ldp x21, x22, [x29, #32] ldp x23, x24, [x29, #48] diff --git a/drivers/trusty/trusty-fiq-arm64-glue.S b/drivers/trusty/trusty-fiq-arm64-glue.S index 6994b3a94fc3..efbaca56292c 100644 --- a/drivers/trusty/trusty-fiq-arm64-glue.S +++ b/drivers/trusty/trusty-fiq-arm64-glue.S @@ -52,3 +52,8 @@ ENTRY(trusty_fiq_glue_arm64) ldr x0, =SMC_FC_FIQ_EXIT smc #0 b . /* should not get here */ + +ENTRY(trusty_fiq_cpu_resume) + ldr x0, =SMC_FC_FIQ_RESUME + smc #0 + ret diff --git a/include/linux/trusty/smcall.h b/include/linux/trusty/smcall.h index 80101dfc07e7..ca66be546e71 100644 --- a/include/linux/trusty/smcall.h +++ b/include/linux/trusty/smcall.h @@ -124,6 +124,8 @@ #define TRUSTY_API_VERSION_CURRENT (3) #define SMC_FC_API_VERSION SMC_FASTCALL_NR (SMC_ENTITY_SECURE_MONITOR, 11) +#define SMC_FC_FIQ_RESUME SMC_FASTCALL_NR (SMC_ENTITY_SECURE_MONITOR, 12) + /* TRUSTED_OS entity calls */ #define SMC_SC_VIRTIO_GET_DESCR SMC_STDCALL_NR(SMC_ENTITY_TRUSTED_OS, 20) #define SMC_SC_VIRTIO_START SMC_STDCALL_NR(SMC_ENTITY_TRUSTED_OS, 21)