diff --git a/include/runtime_services/ffa_helpers.h b/include/runtime_services/ffa_helpers.h
index 1635bf8..3da5c18 100644
--- a/include/runtime_services/ffa_helpers.h
+++ b/include/runtime_services/ffa_helpers.h
@@ -133,21 +133,21 @@
 #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 @@
 };
 
 /**
+ * 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 dd98459..80211a8 100644
--- a/spm/common/sp_tests/sp_test_ffa.c
+++ b/spm/common/sp_tests/sp_test_ffa.c
@@ -30,7 +30,8 @@
 	{
 		.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 @@
 	{
 		.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 @@
 	{
 		.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 @@
 	{
 		.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 b80f9c4..1300f70 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 @@
 	{
 		.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 @@
 	{
 		.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 @@
 	{
 		.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 @@
 	{
 		.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 @@
 			(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 @@
 				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;
 			}
