SPCI is now called PSA FF-A
SPCI is renamed as PSA FF-A which stands for Platform Security
Architecture Firmware Framework for A class processors.
This patch replaces the occurrence of SPCI with PSA FF-A(in documents)
or simply FFA(in code).
Signed-off-by: J-Alves <joao.alves@arm.com>
Change-Id: I17728c1503312845944a5ba060c252c2b98f3e91
diff --git a/include/common/test_helpers.h b/include/common/test_helpers.h
index 5c0f090..e9e0b7b 100644
--- a/include/common/test_helpers.h
+++ b/include/common/test_helpers.h
@@ -10,7 +10,7 @@
#include <arch_features.h>
#include <plat_topology.h>
#include <psci.h>
-#include <spci_svc.h>
+#include <ffa_svc.h>
#include <tftf_lib.h>
#include <trusted_os.h>
#include <tsp.h>
@@ -143,27 +143,27 @@
version & MM_VERSION_MINOR_MASK); \
} while (0)
-#define SKIP_TEST_IF_SPCI_VERSION_LESS_THAN(major, minor) \
+#define SKIP_TEST_IF_FFA_VERSION_LESS_THAN(major, minor) \
do { \
- smc_args version_smc = { SPCI_VERSION }; \
+ smc_args version_smc = { FFA_VERSION }; \
smc_ret_values smc_ret = tftf_smc(&version_smc); \
uint32_t version = smc_ret.ret2; \
\
- if (smc_ret.ret0 != SPCI_SUCCESS_SMC32) { \
+ if (smc_ret.ret0 != FFA_SUCCESS_SMC32) { \
tftf_testcase_printf("SPM not detected.\n"); \
return TEST_RESULT_SKIPPED; \
} \
\
- if ((version & SPCI_VERSION_BIT31_MASK) != 0) { \
- tftf_testcase_printf("SPCI_VERSION bad response.\n"); \
+ if ((version & FFA_VERSION_BIT31_MASK) != 0) { \
+ tftf_testcase_printf("FFA_VERSION bad response.\n"); \
return TEST_RESULT_SKIPPED; \
} \
\
- if (version < MAKE_SPCI_VERSION(major, minor)) { \
- tftf_testcase_printf("SPCI_VERSION returned %d.%d\n" \
+ if (version < MAKE_FFA_VERSION(major, minor)) { \
+ tftf_testcase_printf("FFA_VERSION returned %d.%d\n" \
"The required version is %d.%d\n", \
- version >> SPCI_VERSION_MAJOR_SHIFT,\
- version & SPCI_VERSION_MINOR_MASK, \
+ version >> FFA_VERSION_MAJOR_SHIFT,\
+ version & FFA_VERSION_MINOR_MASK, \
major, minor); \
return TEST_RESULT_SKIPPED; \
} \
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
new file mode 100644
index 0000000..f280c77
--- /dev/null
+++ b/include/runtime_services/ffa_helpers.h
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FFA_HELPERS_H
+#define FFA_HELPERS_H
+
+#include <tftf_lib.h>
+#include <utils_def.h>
+
+/* This error code must be different to the ones used by FFA */
+#define FFA_TFTF_ERROR -42
+
+#ifndef __ASSEMBLY__
+
+#include <stdint.h>
+
+smc_ret_values ffa_msg_send_direct_req(uint32_t source_id, uint32_t dest_id, uint32_t message);
+smc_ret_values ffa_msg_send_direct_req64(uint32_t source_id, uint32_t dest_id, uint64_t message);
+smc_ret_values ffa_run(uint32_t dest_id, uint32_t vcpu_id);
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* FFA_HELPERS_H */
diff --git a/include/runtime_services/ffa_svc.h b/include/runtime_services/ffa_svc.h
new file mode 100644
index 0000000..541a75a
--- /dev/null
+++ b/include/runtime_services/ffa_svc.h
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#ifndef FFA_SVC_H
+#define FFA_SVC_H
+
+#include <lib/utils_def.h>
+#include <smccc.h>
+#include <uuid.h>
+
+/* FFA error codes. */
+#define FFA_ERROR_NOT_SUPPORTED -1
+#define FFA_ERROR_INVALID_PARAMETER -2
+#define FFA_ERROR_NO_MEMORY -3
+#define FFA_ERROR_BUSY -4
+#define FFA_ERROR_INTERRUPTED -5
+#define FFA_ERROR_DENIED -6
+#define FFA_ERROR_RETRY -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(0x7f)
+#define is_ffa_fid(fid) __extension__ ({ \
+ __typeof__(fid) _fid = (fid); \
+ ((GET_SMC_NUM(_fid) >= FFA_FNUM_MIN_VALUE) && \
+ (GET_SMC_NUM(_fid) <= FFA_FNUM_MAX_VALUE)); })
+
+/* FFA_VERSION helpers */
+#define FFA_VERSION_MAJOR U(1)
+#define FFA_VERSION_MAJOR_SHIFT 16
+#define FFA_VERSION_MAJOR_MASK U(0x7FFF)
+#define FFA_VERSION_MINOR U(0)
+#define FFA_VERSION_MINOR_SHIFT 0
+#define FFA_VERSION_MINOR_MASK U(0xFFFF)
+#define FFA_VERSION_BIT31_MASK (1 << 31)
+
+#define MAKE_FFA_VERSION(major, minor) \
+ ((((major) & FFA_VERSION_MAJOR_MASK) << FFA_VERSION_MAJOR_SHIFT) | \
+ (((minor) & FFA_VERSION_MINOR_MASK) << FFA_VERSION_MINOR_SHIFT))
+#define FFA_VERSION_COMPILED MAKE_FFA_VERSION(FFA_VERSION_MAJOR, \
+ FFA_VERSION_MINOR)
+
+/* FFA_MSG_SEND helpers */
+#define FFA_MSG_SEND_ATTRS_BLK_SHIFT U(0)
+#define FFA_MSG_SEND_ATTRS_BLK_MASK U(0x1)
+#define FFA_MSG_SEND_ATTRS_BLK U(0)
+#define FFA_MSG_SEND_ATTRS_BLK_NOT U(1)
+#define FFA_MSG_SEND_ATTRS(blk) \
+ (((blk) & FFA_MSG_SEND_ATTRS_BLK_MASK) \
+ << FFA_MSG_SEND_ATTRS_BLK_SHIFT)
+
+/* Get FFA fastcall std FID from function number */
+#define FFA_FID(smc_cc, func_num) \
+ ((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT) | \
+ ((smc_cc) << FUNCID_CC_SHIFT) | \
+ (OEN_STD_START << FUNCID_OEN_SHIFT) | \
+ ((func_num) << FUNCID_NUM_SHIFT))
+
+/* FFA function numbers */
+#define FFA_FNUM_ERROR U(0x60)
+#define FFA_FNUM_SUCCESS U(0x61)
+#define FFA_FNUM_INTERRUPT U(0x62)
+#define FFA_FNUM_VERSION U(0x63)
+#define FFA_FNUM_FEATURES U(0x64)
+#define FFA_FNUM_RX_RELEASE U(0x65)
+#define FFA_FNUM_RXTX_MAP U(0x66)
+#define FFA_FNUM_RXTX_UNMAP U(0x67)
+#define FFA_FNUM_PARTITION_INFO_GET U(0x68)
+#define FFA_FNUM_ID_GET U(0x69)
+#define FFA_FNUM_MSG_POLL U(0x6A)
+#define FFA_FNUM_MSG_WAIT U(0x6B)
+#define FFA_FNUM_MSG_YIELD U(0x6C)
+#define FFA_FNUM_MSG_RUN U(0x6D)
+#define FFA_FNUM_MSG_SEND U(0x6E)
+#define FFA_FNUM_MSG_SEND_DIRECT_REQ U(0x6F)
+#define FFA_FNUM_MSG_SEND_DIRECT_RESP U(0x70)
+#define FFA_FNUM_MEM_DONATE U(0x71)
+#define FFA_FNUM_MEM_LEND U(0x72)
+#define FFA_FNUM_MEM_SHARE U(0x73)
+#define FFA_FNUM_MEM_RETRIEVE_REQ U(0x74)
+#define FFA_FNUM_MEM_RETRIEVE_RESP U(0x75)
+#define FFA_FNUM_MEM_RELINQUISH U(0x76)
+#define FFA_FNUM_MEM_RECLAIM U(0x77)
+
+/* FFA SMC32 FIDs */
+#define FFA_ERROR FFA_FID(SMC_32, FFA_FNUM_ERROR)
+#define FFA_SUCCESS_SMC32 FFA_FID(SMC_32, FFA_FNUM_SUCCESS)
+#define FFA_INTERRUPT FFA_FID(SMC_32, FFA_FNUM_INTERRUPT)
+#define FFA_VERSION FFA_FID(SMC_32, FFA_FNUM_VERSION)
+#define FFA_FEATURES FFA_FID(SMC_32, FFA_FNUM_FEATURES)
+#define FFA_RX_RELEASE FFA_FID(SMC_32, FFA_FNUM_RX_RELEASE)
+#define FFA_RXTX_MAP_SMC32 FFA_FID(SMC_32, FFA_FNUM_RXTX_MAP)
+#define FFA_RXTX_UNMAP FFA_FID(SMC_32, FFA_FNUM_RXTX_UNMAP)
+#define FFA_PARTITION_INFO_GET FFA_FID(SMC_32, FFA_FNUM_PARTITION_INFO_GET)
+#define FFA_ID_GET FFA_FID(SMC_32, FFA_FNUM_ID_GET)
+#define FFA_MSG_POLL FFA_FID(SMC_32, FFA_FNUM_MSG_POLL)
+#define FFA_MSG_WAIT FFA_FID(SMC_32, FFA_FNUM_MSG_WAIT)
+#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_SEND_DIRECT_REQ_SMC32 \
+ FFA_FID(SMC_32, FFA_FNUM_MSG_SEND_DIRECT_REQ)
+#define FFA_MSG_SEND_DIRECT_RESP_SMC32 \
+ FFA_FID(SMC_32, FFA_FNUM_MSG_SEND_DIRECT_RESP)
+#define FFA_MEM_DONATE_SMC32 FFA_FID(SMC_32, FFA_FNUM_MEM_DONATE)
+#define FFA_MEM_LEND_SMC32 FFA_FID(SMC_32, FFA_FNUM_MEM_LEND)
+#define FFA_MEM_SHARE_SMC32 FFA_FID(SMC_32, FFA_FNUM_MEM_SHARE)
+#define FFA_MEM_RETRIEVE_REQ_SMC32 \
+ FFA_FID(SMC_32, FFA_FNUM_MEM_RETRIEVE_REQ)
+#define FFA_MEM_RETRIEVE_RESP FFA_FID(SMC_32, FFA_FNUM_MEM_RETRIEVE_RESP)
+#define FFA_MEM_RELINQUISH FFA_FID(SMC_32, FFA_FNUM_MEM_RELINQUISH)
+#define FFA_MEM_RECLAIM FFA_FID(SMC_32, FFA_FNUM_MEM_RECLAIM)
+
+/* FFA SMC64 FIDs */
+#define FFA_SUCCESS_SMC64 FFA_FID(SMC_64, FFA_FNUM_SUCCESS)
+#define FFA_RXTX_MAP_SMC64 FFA_FID(SMC_64, FFA_FNUM_RXTX_MAP)
+#define FFA_MSG_SEND_DIRECT_REQ_SMC64 \
+ FFA_FID(SMC_64, FFA_FNUM_MSG_SEND_DIRECT_REQ)
+#define FFA_MSG_SEND_DIRECT_RESP_SMC64 \
+ FFA_FID(SMC_64, FFA_FNUM_MSG_SEND_DIRECT_RESP)
+#define FFA_MEM_DONATE_SMC64 FFA_FID(SMC_64, FFA_FNUM_MEM_DONATE)
+#define FFA_MEM_LEND_SMC64 FFA_FID(SMC_64, FFA_FNUM_MEM_LEND)
+#define FFA_MEM_SHARE_SMC64 FFA_FID(SMC_64, FFA_FNUM_MEM_SHARE)
+#define FFA_MEM_RETRIEVE_REQ_SMC64 \
+ FFA_FID(SMC_64, FFA_FNUM_MEM_RETRIEVE_REQ)
+
+/*
+ * Reserve a special value for traffic targeted to the Hypervisor or SPM.
+ */
+#define FFA_TARGET_INFO_MBZ U(0x0)
+
+/*
+ * Reserve a special value for MBZ parameters.
+ */
+#define FFA_PARAM_MBZ U(0x0)
+
+#endif /* FFA_SVC_H */
diff --git a/include/runtime_services/spci_helpers.h b/include/runtime_services/spci_helpers.h
deleted file mode 100644
index cfc3a5f..0000000
--- a/include/runtime_services/spci_helpers.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SPCI_HELPERS_H
-#define SPCI_HELPERS_H
-
-#include <tftf_lib.h>
-#include <utils_def.h>
-
-/* This error code must be different to the ones used by SPCI */
-#define SPCI_TFTF_ERROR -42
-
-#ifndef __ASSEMBLY__
-
-#include <stdint.h>
-
-smc_ret_values spci_msg_send_direct_req(uint32_t source_id, uint32_t dest_id, uint32_t message);
-smc_ret_values spci_msg_send_direct_req64(uint32_t source_id, uint32_t dest_id, uint64_t message);
-smc_ret_values spci_run(uint32_t dest_id, uint32_t vcpu_id);
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* SPCI_HELPERS_H */
diff --git a/include/runtime_services/spci_svc.h b/include/runtime_services/spci_svc.h
deleted file mode 100644
index 926f52a..0000000
--- a/include/runtime_services/spci_svc.h
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef SPCI_SVC_H
-#define SPCI_SVC_H
-
-#include <lib/utils_def.h>
-#include <smccc.h>
-#include <uuid.h>
-
-/* SPCI error codes. */
-#define SPCI_ERROR_NOT_SUPPORTED -1
-#define SPCI_ERROR_INVALID_PARAMETER -2
-#define SPCI_ERROR_NO_MEMORY -3
-#define SPCI_ERROR_BUSY -4
-#define SPCI_ERROR_INTERRUPTED -5
-#define SPCI_ERROR_DENIED -6
-#define SPCI_ERROR_RETRY -7
-
-/* The macros below are used to identify SPCI calls from the SMC function ID */
-#define SPCI_FNUM_MIN_VALUE U(0x60)
-#define SPCI_FNUM_MAX_VALUE U(0x7f)
-#define is_spci_fid(fid) __extension__ ({ \
- __typeof__(fid) _fid = (fid); \
- ((GET_SMC_NUM(_fid) >= SPCI_FNUM_MIN_VALUE) && \
- (GET_SMC_NUM(_fid) <= SPCI_FNUM_MAX_VALUE)); })
-
-/* SPCI_VERSION helpers */
-#define SPCI_VERSION_MAJOR U(0)
-#define SPCI_VERSION_MAJOR_SHIFT 16
-#define SPCI_VERSION_MAJOR_MASK U(0x7FFF)
-#define SPCI_VERSION_MINOR U(9)
-#define SPCI_VERSION_MINOR_SHIFT 0
-#define SPCI_VERSION_MINOR_MASK U(0xFFFF)
-#define SPCI_VERSION_BIT31_MASK (1 << 31)
-
-#define MAKE_SPCI_VERSION(major, minor) \
- ((((major) & SPCI_VERSION_MAJOR_MASK) << SPCI_VERSION_MAJOR_SHIFT) | \
- (((minor) & SPCI_VERSION_MINOR_MASK) << SPCI_VERSION_MINOR_SHIFT))
-#define SPCI_VERSION_COMPILED MAKE_SPCI_VERSION(SPCI_VERSION_MAJOR, \
- SPCI_VERSION_MINOR)
-
-/* SPCI_MSG_SEND helpers */
-#define SPCI_MSG_SEND_ATTRS_BLK_SHIFT U(0)
-#define SPCI_MSG_SEND_ATTRS_BLK_MASK U(0x1)
-#define SPCI_MSG_SEND_ATTRS_BLK U(0)
-#define SPCI_MSG_SEND_ATTRS_BLK_NOT U(1)
-#define SPCI_MSG_SEND_ATTRS(blk) \
- (((blk) & SPCI_MSG_SEND_ATTRS_BLK_MASK) \
- << SPCI_MSG_SEND_ATTRS_BLK_SHIFT)
-
-/* Get SPCI fastcall std FID from function number */
-#define SPCI_FID(smc_cc, func_num) \
- ((SMC_TYPE_FAST << FUNCID_TYPE_SHIFT) | \
- ((smc_cc) << FUNCID_CC_SHIFT) | \
- (OEN_STD_START << FUNCID_OEN_SHIFT) | \
- ((func_num) << FUNCID_NUM_SHIFT))
-
-/* SPCI function numbers */
-#define SPCI_FNUM_ERROR U(0x60)
-#define SPCI_FNUM_SUCCESS U(0x61)
-#define SPCI_FNUM_INTERRUPT U(0x62)
-#define SPCI_FNUM_VERSION U(0x63)
-#define SPCI_FNUM_FEATURES U(0x64)
-#define SPCI_FNUM_RX_RELEASE U(0x65)
-#define SPCI_FNUM_RXTX_MAP U(0x66)
-#define SPCI_FNUM_RXTX_UNMAP U(0x67)
-#define SPCI_FNUM_PARTITION_INFO_GET U(0x68)
-#define SPCI_FNUM_ID_GET U(0x69)
-#define SPCI_FNUM_MSG_POLL U(0x6A)
-#define SPCI_FNUM_MSG_WAIT U(0x6B)
-#define SPCI_FNUM_MSG_YIELD U(0x6C)
-#define SPCI_FNUM_MSG_RUN U(0x6D)
-#define SPCI_FNUM_MSG_SEND U(0x6E)
-#define SPCI_FNUM_MSG_SEND_DIRECT_REQ U(0x6F)
-#define SPCI_FNUM_MSG_SEND_DIRECT_RESP U(0x70)
-#define SPCI_FNUM_MEM_DONATE U(0x71)
-#define SPCI_FNUM_MEM_LEND U(0x72)
-#define SPCI_FNUM_MEM_SHARE U(0x73)
-#define SPCI_FNUM_MEM_RETRIEVE_REQ U(0x74)
-#define SPCI_FNUM_MEM_RETRIEVE_RESP U(0x75)
-#define SPCI_FNUM_MEM_RELINQUISH U(0x76)
-#define SPCI_FNUM_MEM_RECLAIM U(0x77)
-
-/* SPCI SMC32 FIDs */
-#define SPCI_ERROR SPCI_FID(SMC_32, SPCI_FNUM_ERROR)
-#define SPCI_SUCCESS_SMC32 SPCI_FID(SMC_32, SPCI_FNUM_SUCCESS)
-#define SPCI_INTERRUPT SPCI_FID(SMC_32, SPCI_FNUM_INTERRUPT)
-#define SPCI_VERSION SPCI_FID(SMC_32, SPCI_FNUM_VERSION)
-#define SPCI_FEATURES SPCI_FID(SMC_32, SPCI_FNUM_FEATURES)
-#define SPCI_RX_RELEASE SPCI_FID(SMC_32, SPCI_FNUM_RX_RELEASE)
-#define SPCI_RXTX_MAP_SMC32 SPCI_FID(SMC_32, SPCI_FNUM_RXTX_MAP)
-#define SPCI_RXTX_UNMAP SPCI_FID(SMC_32, SPCI_FNUM_RXTX_UNMAP)
-#define SPCI_PARTITION_INFO_GET SPCI_FID(SMC_32, SPCI_FNUM_PARTITION_INFO_GET)
-#define SPCI_ID_GET SPCI_FID(SMC_32, SPCI_FNUM_ID_GET)
-#define SPCI_MSG_POLL SPCI_FID(SMC_32, SPCI_FNUM_MSG_POLL)
-#define SPCI_MSG_WAIT SPCI_FID(SMC_32, SPCI_FNUM_MSG_WAIT)
-#define SPCI_MSG_YIELD SPCI_FID(SMC_32, SPCI_FNUM_MSG_YIELD)
-#define SPCI_MSG_RUN SPCI_FID(SMC_32, SPCI_FNUM_MSG_RUN)
-#define SPCI_MSG_SEND SPCI_FID(SMC_32, SPCI_FNUM_MSG_SEND)
-#define SPCI_MSG_SEND_DIRECT_REQ_SMC32 \
- SPCI_FID(SMC_32, SPCI_FNUM_MSG_SEND_DIRECT_REQ)
-#define SPCI_MSG_SEND_DIRECT_RESP_SMC32 \
- SPCI_FID(SMC_32, SPCI_FNUM_MSG_SEND_DIRECT_RESP)
-#define SPCI_MEM_DONATE_SMC32 SPCI_FID(SMC_32, SPCI_FNUM_MEM_DONATE)
-#define SPCI_MEM_LEND_SMC32 SPCI_FID(SMC_32, SPCI_FNUM_MEM_LEND)
-#define SPCI_MEM_SHARE_SMC32 SPCI_FID(SMC_32, SPCI_FNUM_MEM_SHARE)
-#define SPCI_MEM_RETRIEVE_REQ_SMC32 \
- SPCI_FID(SMC_32, SPCI_FNUM_MEM_RETRIEVE_REQ)
-#define SPCI_MEM_RETRIEVE_RESP SPCI_FID(SMC_32, SPCI_FNUM_MEM_RETRIEVE_RESP)
-#define SPCI_MEM_RELINQUISH SPCI_FID(SMC_32, SPCI_FNUM_MEM_RELINQUISH)
-#define SPCI_MEM_RECLAIM SPCI_FID(SMC_32, SPCI_FNUM_MEM_RECLAIM)
-
-/* SPCI SMC64 FIDs */
-#define SPCI_SUCCESS_SMC64 SPCI_FID(SMC_64, SPCI_FNUM_SUCCESS)
-#define SPCI_RXTX_MAP_SMC64 SPCI_FID(SMC_64, SPCI_FNUM_RXTX_MAP)
-#define SPCI_MSG_SEND_DIRECT_REQ_SMC64 \
- SPCI_FID(SMC_64, SPCI_FNUM_MSG_SEND_DIRECT_REQ)
-#define SPCI_MSG_SEND_DIRECT_RESP_SMC64 \
- SPCI_FID(SMC_64, SPCI_FNUM_MSG_SEND_DIRECT_RESP)
-#define SPCI_MEM_DONATE_SMC64 SPCI_FID(SMC_64, SPCI_FNUM_MEM_DONATE)
-#define SPCI_MEM_LEND_SMC64 SPCI_FID(SMC_64, SPCI_FNUM_MEM_LEND)
-#define SPCI_MEM_SHARE_SMC64 SPCI_FID(SMC_64, SPCI_FNUM_MEM_SHARE)
-#define SPCI_MEM_RETRIEVE_REQ_SMC64 \
- SPCI_FID(SMC_64, SPCI_FNUM_MEM_RETRIEVE_REQ)
-
-/*
- * Reserve a special value for traffic targeted to the Hypervisor or SPM.
- */
-#define SPCI_TARGET_INFO_MBZ U(0x0)
-
-/*
- * Reserve a special value for MBZ parameters.
- */
-#define SPCI_PARAM_MBZ U(0x0)
-
-#endif /* SPCI_SVC_H */
diff --git a/spm/README.txt b/spm/README.txt
index 0a25d6b..cb22636 100644
--- a/spm/README.txt
+++ b/spm/README.txt
@@ -1,4 +1,4 @@
-This is a prototype loosely based on the SPCI Beta1 specification.
+This is a prototype loosely based on the PSA FF-A v1.0 specification.
Any interface / platform API introduced for this is subject to
change as it evolves.
diff --git a/spm/cactus/cactus-secondary.dts b/spm/cactus/cactus-secondary.dts
index 041cd31..4450b1b 100644
--- a/spm/cactus/cactus-secondary.dts
+++ b/spm/cactus/cactus-secondary.dts
@@ -11,11 +11,11 @@
/dts-v1/;
/ {
- compatible = "arm,spci-manifest-1.0";
+ compatible = "arm,ffa-manifest-1.0";
/* Properties */
description = "Base-1";
- spci-version = <0x00000009>; /* 31:16 - Major, 15:0 - Minor */
+ ffa-version = <0x00010000>; /* 31:16 - Major, 15:0 - Minor */
uuid = <0xd1582309 0xf02347b9 0x827c4464 0xf5578fc8>;
id = <2>;
auxiliary-id = <0xae>;
@@ -34,7 +34,7 @@
gp-register-num = <0x0>;
rx_tx-info {
- compatible = "arm,spci-manifest-rx_tx-buffer";
+ compatible = "arm,ffa-manifest-rx_tx-buffer";
description = "NS RX/TX Buffer";
pages-count = <1>;
@@ -43,7 +43,7 @@
};
memory-regions {
- compatible = "arm,spci-manifest-memory-regions";
+ compatible = "arm,ffa-manifest-memory-regions";
test-memory {
description = "Test Memory";
pages-count = <32>; /* 128KiB with 4KiB pages */
@@ -53,7 +53,7 @@
};
device-regions {
- compatible = "arm,spci-manifest-device-regions";
+ compatible = "arm,ffa-manifest-device-regions";
attributes = <0x0>;
test-reg {
reg = <0x10000008 0x00000001 1>; /* Arbitrary test address */
diff --git a/spm/cactus/cactus.dts b/spm/cactus/cactus.dts
index 78cbb56..ea2b133 100644
--- a/spm/cactus/cactus.dts
+++ b/spm/cactus/cactus.dts
@@ -11,11 +11,11 @@
/dts-v1/;
/ {
- compatible = "arm,spci-manifest-1.0";
+ compatible = "arm,ffa-manifest-1.0";
/* Properties */
description = "Base-1";
- spci-version = <0x00000009>; /* 31:16 - Major, 15:0 - Minor */
+ ffa-version = <0x00010000>; /* 31:16 - Major, 15:0 - Minor */
uuid = <0xb4b5671e 0x4a904fe1 0xb81ffb13 0xdae1dacb>;
id = <1>;
auxiliary-id = <0xae>;
@@ -34,7 +34,7 @@
gp-register-num = <0x0>;
rx_tx-info {
- compatible = "arm,spci-manifest-rx_tx-buffer";
+ compatible = "arm,ffa-manifest-rx_tx-buffer";
description = "NS RX/TX Buffer";
pages-count = <1>;
@@ -43,7 +43,7 @@
};
memory-regions {
- compatible = "arm,spci-manifest-memory-regions";
+ compatible = "arm,ffa-manifest-memory-regions";
test-memory {
description = "Test Memory";
pages-count = <32>; /* 128KiB with 4KiB pages */
@@ -53,7 +53,7 @@
};
device-regions {
- compatible = "arm,spci-manifest-device-regions";
+ compatible = "arm,ffa-manifest-device-regions";
attributes = <0x0>;
test-reg {
reg = <0x10000008 0x00000001 1>; /* Arbitrary test address */
diff --git a/spm/cactus/cactus_debug.c b/spm/cactus/cactus_debug.c
index cce0973..91fbfda 100644
--- a/spm/cactus/cactus_debug.c
+++ b/spm/cactus/cactus_debug.c
@@ -8,7 +8,7 @@
#include <drivers/console.h>
#include "cactus.h"
-#include "spci_helpers.h"
+#include "ffa_helpers.h"
static int (*putc_impl)(int);
diff --git a/spm/cactus/cactus_main.c b/spm/cactus/cactus_main.c
index be137ad..375a875 100644
--- a/spm/cactus/cactus_main.c
+++ b/spm/cactus/cactus_main.c
@@ -19,7 +19,7 @@
#include "cactus.h"
#include "cactus_def.h"
-#include "spci_helpers.h"
+#include "ffa_helpers.h"
/* Host machine information injected by the build system in the ELF file. */
extern const char build_message[];
@@ -33,9 +33,9 @@
* but rather through Hafnium print hypercall.
*
*/
-static void __dead2 message_loop(spci_vm_id_t vm_id)
+static void __dead2 message_loop(ffa_vm_id_t vm_id)
{
- smc_ret_values spci_ret;
+ smc_ret_values ffa_ret;
uint32_t sp_response;
/*
@@ -43,22 +43,22 @@
* SP initialization has completed. It blocks until receiving
* a direct message request.
*/
- spci_ret = spci_msg_wait();
+ ffa_ret = ffa_msg_wait();
for (;;) {
- if (spci_ret.ret0 != SPCI_MSG_SEND_DIRECT_REQ_SMC32) {
- spci_ret = spci_error(-1);
+ if (ffa_ret.ret0 != FFA_MSG_SEND_DIRECT_REQ_SMC32) {
+ ffa_ret = ffa_error(-1);
continue;
}
- if (spci_ret.ret1 != SP_ID(vm_id)) {
- spci_ret = spci_error(-2);
+ if (ffa_ret.ret1 != SP_ID(vm_id)) {
+ ffa_ret = ffa_error(-2);
continue;
}
- if (spci_ret.ret2 != HYP_ID) {
- spci_ret = spci_error(-3);
+ if (ffa_ret.ret2 != HYP_ID) {
+ ffa_ret = ffa_error(-3);
continue;
}
@@ -66,13 +66,13 @@
* For the sake of testing, add the vm id to the
* received message.
*/
- sp_response = spci_ret.ret3 | vm_id;
+ sp_response = ffa_ret.ret3 | vm_id;
/*
* Send a response through direct messaging then block
* until receiving a new message request.
*/
- spci_ret = spci_msg_send_direct_resp(SP_ID(vm_id),
+ ffa_ret = ffa_msg_send_direct_resp(SP_ID(vm_id),
HYP_ID, sp_response);
}
}
@@ -147,16 +147,16 @@
cactus_plat_configure_mmu();
enable_mmu_el1(0);
- /* Get current SPCI id */
- smc_ret_values spci_id_ret = spci_id_get();
- if (spci_id_ret.ret0 != SPCI_SUCCESS_SMC32) {
- ERROR("SPCI_ID_GET failed.\n");
+ /* Get current FFA id */
+ smc_ret_values ffa_id_ret = ffa_id_get();
+ if (ffa_id_ret.ret0 != FFA_SUCCESS_SMC32) {
+ ERROR("FFA_ID_GET failed.\n");
panic();
}
- spci_vm_id_t spci_id = spci_id_ret.ret2 & 0xffff;
+ ffa_vm_id_t ffa_id = ffa_id_ret.ret2 & 0xffff;
- if (spci_id == SPM_VM_ID_FIRST) {
+ if (ffa_id == SPM_VM_ID_FIRST) {
console_init(PL011_UART2_BASE,
PL011_UART2_CLK_IN_HZ,
PL011_BAUDRATE);
@@ -168,13 +168,13 @@
cactus_print_memory_layout();
- NOTICE("SPCI id: %u\n", spci_id); /* Expect VM id 1 */
+ NOTICE("FFA id: %u\n", ffa_id); /* Expect VM id 1 */
/* Get number of VMs */
NOTICE("VM count: %u\n", spm_vm_get_count());
/* Get virtual CPU count for current VM */
- NOTICE("vCPU count: %u\n", spm_vcpu_get_count(spci_id));
+ NOTICE("vCPU count: %u\n", spm_vcpu_get_count(ffa_id));
} else {
set_putc_impl(HVC_CALL_AS_STDOUT);
@@ -182,7 +182,7 @@
build_message, version_string);
}
/* End up to message loop */
- message_loop(spci_id);
+ message_loop(ffa_id);
/* Not reached */
}
diff --git a/spm/cactus/spci_helpers.h b/spm/cactus/ffa_helpers.h
similarity index 62%
rename from spm/cactus/spci_helpers.h
rename to spm/cactus/ffa_helpers.h
index 189df9a..8f6beb4 100644
--- a/spm/cactus/spci_helpers.h
+++ b/spm/cactus/ffa_helpers.h
@@ -4,11 +4,11 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
-#ifndef __SPCI_HELPERS_H__
-#define __SPCI_HELPERS_H__
+#ifndef __FFA_HELPERS_H__
+#define __FFA_HELPERS_H__
-#include <spci_svc.h>
+#include <ffa_svc.h>
#include "tftf_lib.h"
#define SPM_VM_ID_FIRST (1)
@@ -17,19 +17,19 @@
#define SPM_VCPU_GET_COUNT (0xFF02)
#define SPM_DEBUG_LOG (0xBD000000)
-/* Hypervisor ID at physical SPCI instance */
+/* Hypervisor ID at physical FFA instance */
#define HYP_ID (0)
/* By convention, SP IDs (as opposed to VM IDs) have bit 15 set */
#define SP_ID(x) ((x) | (1 << 15))
-typedef unsigned short spci_vm_id_t;
-typedef unsigned short spci_vm_count_t;
-typedef unsigned short spci_vcpu_count_t;
+typedef unsigned short ffa_vm_id_t;
+typedef unsigned short ffa_vm_count_t;
+typedef unsigned short ffa_vcpu_count_t;
/* Functions */
-static inline spci_vcpu_count_t spm_vcpu_get_count(spci_vm_id_t vm_id)
+static inline ffa_vcpu_count_t spm_vcpu_get_count(ffa_vm_id_t vm_id)
{
hvc_args args = {
.fid = SPM_VCPU_GET_COUNT,
@@ -41,7 +41,7 @@
return ret.ret0;
}
-static inline spci_vm_count_t spm_vm_get_count(void)
+static inline ffa_vm_count_t spm_vm_get_count(void)
{
hvc_args args = {
.fid = SPM_VM_GET_COUNT
@@ -62,31 +62,31 @@
(void)tftf_hvc(&args);
}
-static inline smc_ret_values spci_id_get(void)
+static inline smc_ret_values ffa_id_get(void)
{
smc_args args = {
- .fid = SPCI_ID_GET
+ .fid = FFA_ID_GET
};
return tftf_smc(&args);
}
-static inline smc_ret_values spci_msg_wait(void)
+static inline smc_ret_values ffa_msg_wait(void)
{
smc_args args = {
- .fid = SPCI_MSG_WAIT
+ .fid = FFA_MSG_WAIT
};
return tftf_smc(&args);
}
/* Send response through registers using direct messaging */
-static inline smc_ret_values spci_msg_send_direct_resp(spci_vm_id_t sender_vm_id,
- spci_vm_id_t target_vm_id,
+static inline smc_ret_values ffa_msg_send_direct_resp(ffa_vm_id_t sender_vm_id,
+ ffa_vm_id_t target_vm_id,
uint32_t message)
{
smc_args args = {
- .fid = SPCI_MSG_SEND_DIRECT_RESP_SMC32,
+ .fid = FFA_MSG_SEND_DIRECT_RESP_SMC32,
.arg1 = ((uint32_t)sender_vm_id << 16) | target_vm_id,
.arg3 = message
};
@@ -94,10 +94,10 @@
return tftf_smc(&args);
}
-static inline smc_ret_values spci_error(int32_t error_code)
+static inline smc_ret_values ffa_error(int32_t error_code)
{
smc_args args = {
- .fid = SPCI_ERROR,
+ .fid = FFA_ERROR,
.arg1 = 0,
.arg2 = error_code
};
@@ -105,4 +105,4 @@
return tftf_smc(&args);
}
-#endif /* __SPCI_HELPERS_H__ */
+#endif /* __FFA_HELPERS_H__ */
diff --git a/tftf/tests/runtime_services/secure_service/spci_helpers.c b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
similarity index 75%
rename from tftf/tests/runtime_services/secure_service/spci_helpers.c
rename to tftf/tests/runtime_services/secure_service/ffa_helpers.c
index 1370a38..9d19fec 100644
--- a/tftf/tests/runtime_services/secure_service/spci_helpers.c
+++ b/tftf/tests/runtime_services/secure_service/ffa_helpers.c
@@ -6,11 +6,11 @@
#include <debug.h>
#include <smccc.h>
-#include <spci_helpers.h>
-#include <spci_svc.h>
+#include <ffa_helpers.h>
+#include <ffa_svc.h>
/*-----------------------------------------------------------------------------
- * SPCI_RUN
+ * FFA_RUN
*
* Parameters
* uint32 Function ID (w0): 0x8400006D
@@ -19,17 +19,17 @@
* -Bits[15:0]: ID of vCPU of SP/VM to run.
* Other Parameter registers w2-w7/x2-x7: Reserved (MBZ)
*
- * On failure, returns SPCI_ERROR in w0 and error code in w2:
+ * On failure, returns FFA_ERROR in w0 and error code in w2:
* -INVALID_PARAMETERS: Unrecognized endpoint or vCPU ID
- * -NOT_SUPPORTED: This function is not implemented at this SPCI instance
+ * -NOT_SUPPORTED: This function is not implemented at this FFA instance
* -DENIED: Callee is not in a state to handle this request
* -BUSY: vCPU is busy and caller must retry later
* -ABORTED: vCPU or VM ran into an unexpected error and has aborted
*/
-smc_ret_values spci_run(uint32_t dest_id, uint32_t vcpu_id)
+smc_ret_values ffa_run(uint32_t dest_id, uint32_t vcpu_id)
{
smc_args args = {
- SPCI_MSG_RUN,
+ FFA_MSG_RUN,
(dest_id << 16) | vcpu_id,
0, 0, 0, 0, 0, 0
};
@@ -38,7 +38,7 @@
}
/*-----------------------------------------------------------------------------
- * SPCI_MSG_SEND_DIRECT_REQ
+ * FFA_MSG_SEND_DIRECT_REQ
*
* Parameters
* uint32 Function ID (w0): 0x8400006F / 0xC400006F
@@ -48,14 +48,14 @@
* uint32/uint64 (w2/x2) - RFU MBZ
* w3-w7 - Implementation defined
*
- * On failure, returns SPCI_ERROR in w0 and error code in w2:
+ * On failure, returns FFA_ERROR in w0 and error code in w2:
* -INVALID_PARAMETERS: Invalid endpoint ID or non-zero reserved register
* -DENIED: Callee is not in a state to handle this request
- * -NOT_SUPPORTED: This function is not implemented at this SPCI instance
+ * -NOT_SUPPORTED: This function is not implemented at this FFA instance
* -BUSY: Message target is busy
* -ABORTED: Message target ran into an unexpected error and has aborted
*/
-static smc_ret_values __spci_msg_send_direct_req32_5(uint32_t source_id,
+static smc_ret_values __ffa_msg_send_direct_req32_5(uint32_t source_id,
uint32_t dest_id,
uint32_t arg0,
uint32_t arg1,
@@ -64,7 +64,7 @@
uint32_t arg4)
{
smc_args args = {
- SPCI_MSG_SEND_DIRECT_REQ_SMC32,
+ FFA_MSG_SEND_DIRECT_REQ_SMC32,
(source_id << 16) | dest_id,
0,
arg0, arg1, arg2, arg3, arg4
@@ -74,14 +74,14 @@
}
/* Direct message send helper accepting a single 32b message argument */
-smc_ret_values spci_msg_send_direct_req(uint32_t source_id, uint32_t dest_id,
+smc_ret_values ffa_msg_send_direct_req(uint32_t source_id, uint32_t dest_id,
uint32_t message)
{
- return __spci_msg_send_direct_req32_5(source_id, dest_id,
+ return __ffa_msg_send_direct_req32_5(source_id, dest_id,
message, 0, 0, 0, 0);
}
-static smc_ret_values __spci_msg_send_direct_req64_5(uint32_t source_id,
+static smc_ret_values __ffa_msg_send_direct_req64_5(uint32_t source_id,
uint32_t dest_id,
uint64_t arg0,
uint64_t arg1,
@@ -90,7 +90,7 @@
uint64_t arg4)
{
smc_args args = {
- SPCI_MSG_SEND_DIRECT_REQ_SMC64,
+ FFA_MSG_SEND_DIRECT_REQ_SMC64,
(source_id << 16) | dest_id,
0,
arg0, arg1, arg2, arg3, arg4
@@ -100,9 +100,9 @@
}
/* Direct message send helper accepting a single 64b message argument */
-smc_ret_values spci_msg_send_direct_req64(uint32_t source_id, uint32_t dest_id,
+smc_ret_values ffa_msg_send_direct_req64(uint32_t source_id, uint32_t dest_id,
uint64_t message)
{
- return __spci_msg_send_direct_req64_5(source_id, dest_id,
+ return __ffa_msg_send_direct_req64_5(source_id, dest_id,
message, 0, 0, 0, 0);
}
diff --git a/tftf/tests/runtime_services/secure_service/test_spci_direct_messaging.c b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
similarity index 72%
rename from tftf/tests/runtime_services/secure_service/test_spci_direct_messaging.c
rename to tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
index e085226..f189054 100644
--- a/tftf/tests/runtime_services/secure_service/test_spci_direct_messaging.c
+++ b/tftf/tests/runtime_services/secure_service/test_ffa_direct_messaging.c
@@ -8,11 +8,11 @@
#include <cactus_def.h>
#include <platform.h>
#include <smccc.h>
-#include <spci_helpers.h>
-#include <spci_svc.h>
+#include <ffa_helpers.h>
+#include <ffa_svc.h>
#include <test_helpers.h>
-/* Hypervisor ID at physical SPCI instance */
+/* Hypervisor ID at physical FFA instance */
#define HYP_ID (0)
/* By convention, SP IDs (as opposed to VM IDs) have bit 15 set */
@@ -22,10 +22,10 @@
#define DIRECT_MSG_TEST_PATTERN2 (0xbbbb0000)
#define DIRECT_MSG_TEST_PATTERN3 (0xcccc0000)
-#define OPTEE_SPCI_GET_API_VERSION (0)
-#define OPTEE_SPCI_GET_OS_VERSION (1)
-#define OPTEE_SPCI_GET_OS_VERSION_MAJOR (3)
-#define OPTEE_SPCI_GET_OS_VERSION_MINOR (8)
+#define OPTEE_FFA_GET_API_VERSION (0)
+#define OPTEE_FFA_GET_OS_VERSION (1)
+#define OPTEE_FFA_GET_OS_VERSION_MAJOR (3)
+#define OPTEE_FFA_GET_OS_VERSION_MINOR (8)
static test_result_t send_receive_direct_msg(unsigned int sp_id,
unsigned int test_pattern)
@@ -33,15 +33,15 @@
smc_ret_values ret_values;
/* Send a message to SP through direct messaging */
- ret_values = spci_msg_send_direct_req(HYP_ID, SP_ID(sp_id),
+ ret_values = ffa_msg_send_direct_req(HYP_ID, SP_ID(sp_id),
test_pattern);
/*
- * Return responses may be SPCI_MSG_SEND_DIRECT_RESP or SPCI_INTERRUPT,
+ * Return responses may be FFA_MSG_SEND_DIRECT_RESP or FFA_INTERRUPT,
* but only expect the former. Expect SMC32 convention from SP.
*/
- if (ret_values.ret0 != SPCI_MSG_SEND_DIRECT_RESP_SMC32) {
- tftf_testcase_printf("spci_msg_send_direct_req returned %lx\n",
+ if (ret_values.ret0 != FFA_MSG_SEND_DIRECT_RESP_SMC32) {
+ tftf_testcase_printf("ffa_msg_send_direct_req returned %lx\n",
(u_register_t)ret_values.ret0);
return TEST_RESULT_FAIL;
}
@@ -75,40 +75,40 @@
/*
* Send a first OP-TEE-defined protocol message through
- * SPCI direct message.
+ * FFA direct message.
*
*/
- ret_values = spci_msg_send_direct_req(HYP_ID, SP_ID(1),
- OPTEE_SPCI_GET_API_VERSION);
- if ((ret_values.ret3 == SPCI_VERSION_MAJOR) &&
- (ret_values.ret4 == SPCI_VERSION_MINOR)) {
+ ret_values = ffa_msg_send_direct_req(HYP_ID, SP_ID(1),
+ OPTEE_FFA_GET_API_VERSION);
+ if ((ret_values.ret3 == FFA_VERSION_MAJOR) &&
+ (ret_values.ret4 == FFA_VERSION_MINOR)) {
is_optee_spmc_criteria++;
}
/*
* Send a second OP-TEE-defined protocol message through
- * SPCI direct message.
+ * FFA direct message.
*
*/
- ret_values = spci_msg_send_direct_req(HYP_ID, SP_ID(1),
- OPTEE_SPCI_GET_OS_VERSION);
- if ((ret_values.ret3 == OPTEE_SPCI_GET_OS_VERSION_MAJOR) &&
- (ret_values.ret4 == OPTEE_SPCI_GET_OS_VERSION_MINOR)) {
+ ret_values = ffa_msg_send_direct_req(HYP_ID, SP_ID(1),
+ OPTEE_FFA_GET_OS_VERSION);
+ if ((ret_values.ret3 == OPTEE_FFA_GET_OS_VERSION_MAJOR) &&
+ (ret_values.ret4 == OPTEE_FFA_GET_OS_VERSION_MINOR)) {
is_optee_spmc_criteria++;
}
return (is_optee_spmc_criteria == 2);
}
-test_result_t test_spci_direct_messaging(void)
+test_result_t test_ffa_direct_messaging(void)
{
smc_ret_values ret_values;
test_result_t result;
/**********************************************************************
- * Verify that SPCI is there and that it has the correct version.
+ * Verify that FFA is there and that it has the correct version.
**********************************************************************/
- SKIP_TEST_IF_SPCI_VERSION_LESS_THAN(0, 9);
+ SKIP_TEST_IF_FFA_VERSION_LESS_THAN(1, 0);
/* Check if SPMC is OP-TEE at S-EL1 */
if (check_spmc_execution_level()) {
@@ -135,14 +135,14 @@
**********************************************************************/
/*
* NOTICE: for now, the SPM does not initially run each SP sequentially
- * on boot up so we explicitely run the SP once by invoking SPCI_RUN so
- * it reaches spci_msg_wait in the message loop function.
+ * on boot up so we explicitely run the SP once by invoking FFA_RUN so
+ * it reaches ffa_msg_wait in the message loop function.
*/
/* Request running SP2 on VCPU0 */
- ret_values = spci_run(2, 0);
- if (ret_values.ret0 != SPCI_MSG_WAIT) {
- tftf_testcase_printf("spci_run returned %lx\n",
+ ret_values = ffa_run(2, 0);
+ if (ret_values.ret0 != FFA_MSG_WAIT) {
+ tftf_testcase_printf("ffa_run returned %lx\n",
(u_register_t)ret_values.ret0);
return TEST_RESULT_FAIL;
}
diff --git a/tftf/tests/tests-spm.mk b/tftf/tests/tests-spm.mk
index 40c9b87..dab4c6a 100644
--- a/tftf/tests/tests-spm.mk
+++ b/tftf/tests/tests-spm.mk
@@ -6,6 +6,6 @@
TESTS_SOURCES += \
$(addprefix tftf/tests/runtime_services/secure_service/, \
- spci_helpers.c \
- test_spci_direct_messaging.c \
+ ffa_helpers.c \
+ test_ffa_direct_messaging.c \
)
diff --git a/tftf/tests/tests-spm.xml b/tftf/tests/tests-spm.xml
index beac7dd..09af639 100644
--- a/tftf/tests/tests-spm.xml
+++ b/tftf/tests/tests-spm.xml
@@ -11,8 +11,8 @@
<testsuite name="Secure Partition Manager"
description="Test SPM APIs">
- <testcase name="SPCI direct messaging API"
- function="test_spci_direct_messaging" />
+ <testcase name="PSA FF-A direct messaging API"
+ function="test_ffa_direct_messaging" />
</testsuite>