feat(interrupts): discover interrupt ID of managed exit signal

Added support for discovering managed exit interrupt ID in Cactus SP
using FFA_FEATURES ABI during partition initialization.

Signed-off-by: Madhukar Pappireddy <madhukar.pappireddy@arm.com>
Change-Id: I0b6ea04fc18d6903d821e2f890e4e0a4ad5d568a
diff --git a/spm/cactus/cactus_interrupt.c b/spm/cactus/cactus_interrupt.c
index 02d1fbf..e08c4dd 100644
--- a/spm/cactus/cactus_interrupt.c
+++ b/spm/cactus/cactus_interrupt.c
@@ -21,12 +21,29 @@
 extern void notification_pending_interrupt_handler(void);
 
 extern ffa_id_t g_ffa_id;
+static uint32_t managed_exit_interrupt_id;
 
 /* Secure virtual interrupt that was last handled by Cactus SP. */
 uint32_t last_serviced_interrupt[PLATFORM_CORE_COUNT];
 
 extern spinlock_t sp_handler_lock[NUM_VINT_ID];
 
+/*
+ * Managed exit ID discoverable by querying the SPMC through
+ * FFA_FEATURES API.
+ */
+void discover_managed_exit_interrupt_id(void)
+{
+	struct ffa_value ffa_ret;
+
+	/* Interrupt ID value is returned through register W2. */
+	ffa_ret = ffa_features(FFA_FEATURE_MEI);
+	managed_exit_interrupt_id = ffa_feature_intid(ffa_ret);
+
+	VERBOSE("Discovered managed exit interrupt ID: %d\n",
+	     managed_exit_interrupt_id);
+}
+
 void cactus_interrupt_handler(void)
 {
 	uint32_t intid = spm_interrupt_get();