feat(ipi): introduce IPI paravirtualised interface

Interprocessor Interrupts (IPIs) allow an SP to send an interrupt to
itself on another CPU. This patch starts the implementation of this
feature and enables it for the case where the SP is in the RUNNING
state on the target_vcpu.

Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
Change-Id: Idd0e1a5863730ae0f169bd0f56ac3abcd2916870
diff --git a/src/arch/aarch64/hypervisor/handler.c b/src/arch/aarch64/hypervisor/handler.c
index 0244eae..107cdab 100644
--- a/src/arch/aarch64/hypervisor/handler.c
+++ b/src/arch/aarch64/hypervisor/handler.c
@@ -23,6 +23,7 @@
 #include "hf/dlog.h"
 #include "hf/ffa.h"
 #include "hf/ffa_internal.h"
+#include "hf/hf_ipi.h"
 #include "hf/panic.h"
 #include "hf/plat/interrupts.h"
 #include "hf/vm.h"
@@ -1086,6 +1087,10 @@
 		vcpu->regs.r[0] = plat_ffa_interrupt_reconfigure(
 			args.arg1, args.arg2, args.arg3, vcpu);
 		break;
+
+	case HF_INTERRUPT_SEND_IPI:
+		vcpu->regs.r[0] = api_hf_interrupt_send_ipi(args.arg1, vcpu);
+		break;
 #endif
 	case HF_INTERRUPT_ENABLE:
 		vcpu->regs.r[0] = api_interrupt_enable(args.arg1, args.arg2,
diff --git a/src/arch/aarch64/hypervisor/psci_handler.c b/src/arch/aarch64/hypervisor/psci_handler.c
index 5c0ce87..4702301 100644
--- a/src/arch/aarch64/hypervisor/psci_handler.c
+++ b/src/arch/aarch64/hypervisor/psci_handler.c
@@ -215,16 +215,6 @@
 }
 
 /**
- * Convert a PSCI CPU / affinity ID for a secondary VM to the corresponding vCPU
- * index.
- */
-ffa_vcpu_index_t vcpu_id_to_index(cpu_id_t vcpu_id)
-{
-	/* For now we use indices as IDs for the purposes of PSCI. */
-	return vcpu_id;
-}
-
-/**
  * Handles PSCI requests received via HVC or SMC instructions from a secondary
  * VM.
  *