cactus: re-align secure partition id

According to [1] and [2] secure partition ids are defined from
0x8001 to 0xfffe. Update the cactus test payload and TFTF such
that it uses the appropriate IDs.
0x8000 and 0xffff are reserved FF-A IDs respectively for the SPMC
and the SPMD.
Conversely in the NWd, the Hypervisor ID is 0 and VMs are numbered
in the range of 1 to 0x7fff.

[1] https://trustedfirmware-a.readthedocs.io/en/latest/components/
secure-partition-manager.html#ffa-id-get
[2] https://review.trustedfirmware.org/c/hafnium/hafnium/+/5165

Signed-off-by: Olivier Deprez <olivier.deprez@arm.com>
Change-Id: I3e9786212b227e6637a7650e60ddc4e59ad05a46
diff --git a/spm/cactus/cactus_def.h b/spm/cactus/cactus_def.h
index 5a4a5dd..be6f06a 100644
--- a/spm/cactus/cactus_def.h
+++ b/spm/cactus/cactus_def.h
@@ -31,10 +31,10 @@
 /*
  * RX/TX buffer helpers.
  */
-#define get_sp_rx_start(sp_id) (CACTUS_RX_BASE + ((sp_id - 1) * CACTUS_RX_TX_SIZE))
-#define get_sp_rx_end(sp_id) (CACTUS_RX_BASE + ((sp_id - 1) * CACTUS_RX_TX_SIZE) + PAGE_SIZE)
-#define get_sp_tx_start(sp_id) (CACTUS_TX_BASE + ((sp_id - 1) * CACTUS_RX_TX_SIZE))
-#define get_sp_tx_end(sp_id) (CACTUS_TX_BASE + ((sp_id - 1) * CACTUS_RX_TX_SIZE) + PAGE_SIZE)
+#define get_sp_rx_start(sp_id) (CACTUS_RX_BASE + (((sp_id & 0x7FFFU) - 1U) * CACTUS_RX_TX_SIZE))
+#define get_sp_rx_end(sp_id) (CACTUS_RX_BASE + (((sp_id & 0x7FFFU) - 1U) * CACTUS_RX_TX_SIZE) + PAGE_SIZE)
+#define get_sp_tx_start(sp_id) (CACTUS_TX_BASE + (((sp_id & 0x7FFFU) - 1U) * CACTUS_RX_TX_SIZE))
+#define get_sp_tx_end(sp_id) (CACTUS_TX_BASE + (((sp_id & 0x7FFFU) - 1U) * CACTUS_RX_TX_SIZE) + PAGE_SIZE)
 
 /*
  * UUID of secure partition as defined in the respective manifests.
diff --git a/spm/cactus/cactus_ffa_tests.c b/spm/cactus/cactus_ffa_tests.c
index 085923a..a242e41 100644
--- a/spm/cactus/cactus_ffa_tests.c
+++ b/spm/cactus/cactus_ffa_tests.c
@@ -121,9 +121,9 @@
 	const char *test_all = "Get all partitions info";
 
 	const struct ffa_partition_info expected_info[] = {
-		{.id = SPM_VM_ID_FIRST, .exec_context = 8, .properties = 0}, /* Primary partition info */
-		{.id = SPM_VM_ID_SECOND, .exec_context = 2, .properties = 0}, /* Secondary partition info */
-		{.id = SPM_VM_ID_THIRD, .exec_context = 2, .properties = 0} /* Tertiary partition info */
+		{.id = SPM_VM_ID_FIRST, .exec_context = 8U, .properties = 0U}, /* Primary partition info */
+		{.id = SPM_VM_ID_FIRST + 1U, .exec_context = 8U, .properties = 0U}, /* Secondary partition info */
+		{.id = SPM_VM_ID_FIRST + 2U, .exec_context = 8U, .properties = 0U} /* Tertiary partition info */
 	};
 
 	announce_test_section_start(test_partition_info);
diff --git a/spm/cactus/cactus_main.c b/spm/cactus/cactus_main.c
index e833310..737fd11 100644
--- a/spm/cactus/cactus_main.c
+++ b/spm/cactus/cactus_main.c
@@ -54,7 +54,7 @@
 			continue;
 		}
 
-		if (ffa_ret.ret1 != SP_ID(vm_id)) {
+		if (ffa_ret.ret1 != vm_id) {
 			ffa_ret = ffa_error(-2);
 			continue;
 		}
@@ -74,8 +74,7 @@
 		 * Send a response through direct messaging then block
 		 * until receiving a new message request.
 		 */
-		ffa_ret = ffa_msg_send_direct_resp(SP_ID(vm_id),
-						     HYP_ID, sp_response);
+		ffa_ret = ffa_msg_send_direct_resp(vm_id, HYP_ID, sp_response);
 	}
 }
 
@@ -188,7 +187,7 @@
 		NOTICE("Booting Secondary Cactus Secure Partition (ID: %u)\n%s\n%s\n",
 			ffa_id, build_message, version_string);
 
-		if (ffa_id == SPM_VM_ID_THIRD) {
+		if (ffa_id == (SPM_VM_ID_FIRST + 2)) {
 			NOTICE("Mapping RXTX Region\n");
 
 			/* Declare RX/TX buffers at virtual FF-A instance */
diff --git a/spm/common/sp_helpers.h b/spm/common/sp_helpers.h
index 7096daf..965f799 100644
--- a/spm/common/sp_helpers.h
+++ b/spm/common/sp_helpers.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018, Arm Limited. All rights reserved.
+ * Copyright (c) 2018-2020, Arm Limited. All rights reserved.
  *
  * SPDX-License-Identifier: BSD-3-Clause
  */
@@ -11,9 +11,7 @@
 #include <tftf_lib.h>
 #include <ffa_helpers.h>
 
-#define SPM_VM_ID_FIRST                 (1)
-#define SPM_VM_ID_SECOND                (2)
-#define SPM_VM_ID_THIRD                 (3)
+#define SPM_VM_ID_FIRST                 SP_ID(1)
 
 #define SPM_VM_GET_COUNT                (0xFF01)
 #define SPM_VCPU_GET_COUNT              (0xFF02)