mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00
Merge changes from topic "kc/dir_msg_req2" into integration
* changes: feat(spmd): add FFA_MSG_SEND_DIR_RESP2 feat(spmd): add FFA_MSG_SEND_DIR_REQ2
This commit is contained in:
commit
5abc58be59
2 changed files with 34 additions and 4 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2023, Arm Limited. All rights reserved.
|
||||
* Copyright (c) 2020-2024, Arm Limited. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -24,7 +24,7 @@
|
|||
|
||||
/* The macros below are used to identify FFA calls from the SMC function ID */
|
||||
#define FFA_FNUM_MIN_VALUE U(0x60)
|
||||
#define FFA_FNUM_MAX_VALUE U(0x8C)
|
||||
#define FFA_FNUM_MAX_VALUE U(0x8E)
|
||||
#define is_ffa_fid(fid) __extension__ ({ \
|
||||
__typeof__(fid) _fid = (fid); \
|
||||
((GET_SMC_NUM(_fid) >= FFA_FNUM_MIN_VALUE) && \
|
||||
|
@ -123,6 +123,8 @@
|
|||
/* FF-A v1.2 */
|
||||
#define FFA_FNUM_PARTITION_INFO_GET_REGS U(0x8B)
|
||||
#define FFA_FNUM_EL3_INTR_HANDLE U(0x8C)
|
||||
#define FFA_FNUM_MSG_SEND_DIRECT_REQ2 U(0x8D)
|
||||
#define FFA_FNUM_MSG_SEND_DIRECT_RESP2 U(0x8E)
|
||||
|
||||
#define FFA_FNUM_CONSOLE_LOG U(0x8A)
|
||||
|
||||
|
@ -195,6 +197,10 @@
|
|||
#define FFA_PARTITION_INFO_GET_REGS_SMC64 \
|
||||
FFA_FID(SMC_64, FFA_FNUM_PARTITION_INFO_GET_REGS)
|
||||
#define FFA_CONSOLE_LOG_SMC64 FFA_FID(SMC_64, FFA_FNUM_CONSOLE_LOG)
|
||||
#define FFA_MSG_SEND_DIRECT_REQ2_SMC64 \
|
||||
FFA_FID(SMC_64, FFA_FNUM_MSG_SEND_DIRECT_REQ2)
|
||||
#define FFA_MSG_SEND_DIRECT_RESP2_SMC64 \
|
||||
FFA_FID(SMC_64, FFA_FNUM_MSG_SEND_DIRECT_RESP2)
|
||||
|
||||
/*
|
||||
* FF-A partition properties values.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2020-2023, Arm Limited and Contributors. All rights reserved.
|
||||
* Copyright (c) 2020-2024, Arm Limited and Contributors. All rights reserved.
|
||||
*
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*/
|
||||
|
@ -1151,6 +1151,25 @@ uint64_t spmd_smc_handler(uint32_t smc_fid,
|
|||
}
|
||||
break; /* Not reached */
|
||||
|
||||
case FFA_MSG_SEND_DIRECT_REQ2_SMC64:
|
||||
if (!secure_origin) {
|
||||
/* Validate source endpoint is non-secure for non-secure caller. */
|
||||
if (ffa_is_secure_world_id(ffa_endpoint_source(x1))) {
|
||||
return spmd_ffa_error_return(handle,
|
||||
FFA_ERROR_INVALID_PARAMETER);
|
||||
}
|
||||
}
|
||||
/* FFA_MSG_SEND_DIRECT_REQ2 not used for framework messages. */
|
||||
if (secure_origin && spmd_is_spmc_message(x1)) {
|
||||
return spmd_ffa_error_return(handle, FFA_ERROR_INVALID_PARAMETER);
|
||||
} else {
|
||||
/* Forward direct message to the other world */
|
||||
return spmd_smc_forward(smc_fid, secure_origin,
|
||||
x1, x2, x3, x4, cookie,
|
||||
handle, flags);
|
||||
}
|
||||
break; /* Not reached */
|
||||
|
||||
case FFA_MSG_SEND_DIRECT_RESP_SMC32:
|
||||
case FFA_MSG_SEND_DIRECT_RESP_SMC64:
|
||||
if (secure_origin && (spmd_is_spmc_message(x1) ||
|
||||
|
@ -1163,7 +1182,12 @@ uint64_t spmd_smc_handler(uint32_t smc_fid,
|
|||
handle, flags);
|
||||
}
|
||||
break; /* Not reached */
|
||||
|
||||
case FFA_MSG_SEND_DIRECT_RESP2_SMC64:
|
||||
/* Forward direct message to the other world */
|
||||
return spmd_smc_forward(smc_fid, secure_origin,
|
||||
x1, x2, x3, x4, cookie,
|
||||
handle, flags);
|
||||
break; /* Not reached */
|
||||
case FFA_RX_RELEASE:
|
||||
case FFA_RXTX_MAP_SMC32:
|
||||
case FFA_RXTX_MAP_SMC64:
|
||||
|
|
Loading…
Add table
Reference in a new issue