aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Deprez <olivier.deprez@arm.com>2022-11-30 13:41:37 +0100
committerTrustedFirmware Code Review <review@review.trustedfirmware.org>2022-11-30 13:41:37 +0100
commit4ca852f826e4b1e43739493c4d0916a426a8722a (patch)
treea36639a7089b3c898021af58c5208eb109d8a66c
parent93eb010ed1008d0f4e4291104484b7d3ba09e18a (diff)
parent7774d6e975aabe01903b7ca9d7557386f4502bf6 (diff)
downloadtf-a-tests-4ca852f826e4b1e43739493c4d0916a426a8722a.tar.gz
Merge "test(ff-a): check execution state property of partitions"
-rw-r--r--include/runtime_services/ffa_helpers.h25
-rw-r--r--spm/common/sp_tests/sp_test_ffa.c12
-rw-r--r--tftf/tests/runtime_services/secure_service/test_ffa_setup_and_discovery.c20
3 files changed, 38 insertions, 19 deletions
diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 1635bf827..3da5c18b0 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -133,21 +133,21 @@ struct ffa_boot_info_header {
#define FFA_FEATURE_MEI 0x3U
/** Partition property: partition supports receipt of direct requests. */
-#define FFA_PARTITION_DIRECT_REQ_RECV 0x1
+#define FFA_PARTITION_DIRECT_REQ_RECV (UINT32_C(1) << 0)
/** Partition property: partition can send direct requests. */
-#define FFA_PARTITION_DIRECT_REQ_SEND 0x2
+#define FFA_PARTITION_DIRECT_REQ_SEND (UINT32_C(1) << 1)
/** Partition property: partition can send and receive indirect messages. */
-#define FFA_PARTITION_INDIRECT_MSG 0x4
+#define FFA_PARTITION_INDIRECT_MSG (UINT32_C(1) << 2)
/** Partition property: partition can receive notifications. */
-#define FFA_PARTITION_NOTIFICATION 0x8
+#define FFA_PARTITION_NOTIFICATION (UINT32_C(1) << 3)
-/**
- * Partition info descriptor as defined in Table 13.34 of the v1.1 BETA0
- * FF-A Specification
- */
+/** Partition property: partition runs in the AArch64 execution state. */
+#define FFA_PARTITION_AARCH64_EXEC (UINT32_C(1) << 8)
+
+/** Partition info descriptor as defined in FF-A v1.1 EAC0 Table 13.37 */
struct ffa_partition_info {
/** The ID of the VM the information is about */
ffa_id_t id;
@@ -160,8 +160,15 @@ struct ffa_partition_info {
};
/**
+ * Bits[31:3] of partition properties must be zero for FF-A v1.0.
+ * This corresponds to table 8.25 "Partition information descriptor"
+ * in DEN0077A FF-A 1.0 REL specification.
+ */
+#define FFA_PARTITION_v1_0_RES_MASK (~(UINT32_C(0x7)))
+
+/**
* Partition info descriptor as defined in Table 8.25 of the v1.0
- * FF-A Specification
+ * FF-A Specification (DEN0077A).
*/
struct ffa_partition_info_v1_0 {
/** The ID of the VM the information is about */
diff --git a/spm/common/sp_tests/sp_test_ffa.c b/spm/common/sp_tests/sp_test_ffa.c
index dd984592e..80211a8d1 100644
--- a/spm/common/sp_tests/sp_test_ffa.c
+++ b/spm/common/sp_tests/sp_test_ffa.c
@@ -30,7 +30,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(1),
.exec_context = PRIMARY_EXEC_CTX_COUNT,
- .properties = (FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = (FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_DIRECT_REQ_SEND |
FFA_PARTITION_NOTIFICATION),
.uuid = sp_uuids[0]
@@ -39,7 +40,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(2),
.exec_context = SECONDARY_EXEC_CTX_COUNT,
- .properties = (FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = (FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_DIRECT_REQ_SEND |
FFA_PARTITION_NOTIFICATION),
.uuid = sp_uuids[1]
@@ -48,7 +50,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(3),
.exec_context = TERTIARY_EXEC_CTX_COUNT,
- .properties = (FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = (FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_DIRECT_REQ_SEND |
FFA_PARTITION_NOTIFICATION),
.uuid = sp_uuids[2]
@@ -57,7 +60,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(4),
.exec_context = IVY_EXEC_CTX_COUNT,
- .properties = (FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = (FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_DIRECT_REQ_SEND),
.uuid = sp_uuids[3]
}
diff --git a/tftf/tests/runtime_services/secure_service/test_ffa_setup_and_discovery.c b/tftf/tests/runtime_services/secure_service/test_ffa_setup_and_discovery.c
index b80f9c4ff..1300f7030 100644
--- a/tftf/tests/runtime_services/secure_service/test_ffa_setup_and_discovery.c
+++ b/tftf/tests/runtime_services/secure_service/test_ffa_setup_and_discovery.c
@@ -27,7 +27,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(1),
.exec_context = PRIMARY_EXEC_CTX_COUNT,
- .properties = FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_NOTIFICATION,
.uuid = sp_uuids[0]
},
@@ -35,7 +36,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(2),
.exec_context = SECONDARY_EXEC_CTX_COUNT,
- .properties = FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_NOTIFICATION,
.uuid = sp_uuids[1]
},
@@ -43,7 +45,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(3),
.exec_context = TERTIARY_EXEC_CTX_COUNT,
- .properties = FFA_PARTITION_DIRECT_REQ_RECV |
+ .properties = FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV |
FFA_PARTITION_NOTIFICATION,
.uuid = sp_uuids[2]
},
@@ -51,7 +54,8 @@ static const struct ffa_partition_info ffa_expected_partition_info[] = {
{
.id = SP_ID(4),
.exec_context = IVY_EXEC_CTX_COUNT,
- .properties = FFA_PARTITION_DIRECT_REQ_RECV,
+ .properties = FFA_PARTITION_AARCH64_EXEC |
+ FFA_PARTITION_DIRECT_REQ_RECV,
.uuid = sp_uuids[3]
}
};
@@ -399,6 +403,10 @@ test_result_t test_ffa_partition_info_v1_0(void)
(const struct ffa_partition_info_v1_0 *)(mb.recv);
for (unsigned int i = 0U; i < expected_size; i++) {
+ uint32_t expected_properties_v1_0 =
+ ffa_expected_partition_info[i].properties &
+ ~FFA_PARTITION_v1_0_RES_MASK;
+
if (info[i].id != ffa_expected_partition_info[i].id) {
ERROR("Wrong ID. Expected %x, got %x\n",
ffa_expected_partition_info[i].id,
@@ -413,9 +421,9 @@ test_result_t test_ffa_partition_info_v1_0(void)
result = TEST_RESULT_FAIL;
}
if (info[i].properties !=
- ffa_expected_partition_info[i].properties) {
+ expected_properties_v1_0) {
ERROR("Wrong properties. Expected %d, got %d\n",
- ffa_expected_partition_info[i].properties,
+ expected_properties_v1_0,
info[i].properties);
result = TEST_RESULT_FAIL;
}