From c2eba07c47f8d831629104eeffcec11ed7d3b0a5 Mon Sep 17 00:00:00 2001 From: Federico Recanati Date: Thu, 3 Feb 2022 17:22:37 +0100 Subject: [PATCH] feat(spm): add FFA_MSG_SEND2 forwarding in SPMD Add FF-A v1.1 indirect messaging ABI FFA_MSG_SEND2 to SPMD to allow message forwarding across normal/secure worlds. Change-Id: I074fbd2e4d13893925f987cee271d49da3aaf64b Signed-off-by: Federico Recanati --- include/services/ffa_svc.h | 1 + services/std_svc/spmd/spmd_main.c | 11 ++++------- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/include/services/ffa_svc.h b/include/services/ffa_svc.h index 4c049c5f8..9a7c48989 100644 --- a/include/services/ffa_svc.h +++ b/include/services/ffa_svc.h @@ -116,6 +116,7 @@ #define FFA_MSG_YIELD FFA_FID(SMC_32, FFA_FNUM_MSG_YIELD) #define FFA_MSG_RUN FFA_FID(SMC_32, FFA_FNUM_MSG_RUN) #define FFA_MSG_SEND FFA_FID(SMC_32, FFA_FNUM_MSG_SEND) +#define FFA_MSG_SEND2 FFA_FID(SMC_32, FFA_FNUM_MSG_SEND2) #define FFA_MSG_SEND_DIRECT_REQ_SMC32 \ FFA_FID(SMC_32, FFA_FNUM_MSG_SEND_DIRECT_REQ) #define FFA_MSG_SEND_DIRECT_RESP_SMC32 \ diff --git a/services/std_svc/spmd/spmd_main.c b/services/std_svc/spmd/spmd_main.c index f5de54966..bfee2dddb 100644 --- a/services/std_svc/spmd/spmd_main.c +++ b/services/std_svc/spmd/spmd_main.c @@ -688,16 +688,13 @@ uint64_t spmd_smc_handler(uint32_t smc_fid, case FFA_NOTIFICATION_GET: case FFA_NOTIFICATION_INFO_GET: case FFA_NOTIFICATION_INFO_GET_SMC64: + case FFA_MSG_SEND2: #endif + case FFA_MSG_RUN: /* - * Above calls should not be forwarded from Secure world to - * Normal world. - * - * Fall through to forward the call to the other world + * Above calls should be invoked only by the Normal world and + * must not be forwarded from Secure world to Normal world. */ - case FFA_MSG_RUN: - /* This interface must be invoked only by the Normal world */ - if (secure_origin) { return spmd_ffa_error_return(handle, FFA_ERROR_NOT_SUPPORTED); -- 2.39.5